Backend/기타

Jsp 게시판 만들기 - 에러 : 게시물 한글만 깨짐

saintclair 2023. 3. 30. 15:25

 

이런식으로 게시물 작성하면 제목과 내용의 한글이 ???로 나온다

1. 설정 전부 UTF-8로 변경해봄 -> 실패

->해결안됨

 

2. 톰캣 설치 후 server.xml 파일에  URIEncoding="UTF-8" 을 추가했으면

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

jsp 파일에 있는 맨 윗줄 이 부분의 pageEncoding="UTF-8"과 충돌하여 깨질 수도 있다고 함 -> 실패

 

<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>

그래서 이렇게 변경했지만 해결안됨

당연함. 일단 난 서버파일에 내용추가한 적이 없음

무작정 따라하지 말고 천천히 어떻게 진행했는지 기록하고 생각하면서 진행하자

 

3. 일단 톰캣 이클립스에서 server.xml 파일 수정해봄 -> 실패

URIEncoding="UTF-8" 추가 후 

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

충돌하지 않게 jsp 파일 맨 윗줄을 

<%@ page language="java" contentType="text/html; charset=UTF-8"%>

이렇게 변경해봄

 

역시나 안됨..

살려줘..

 

그런데 오늘 노트북으로 프로젝트를 옮기는 과정에서 다른 에러해결하다가 덩달아 해결됨

이유가 뭐였을까

다시 찾아봐야겠음

 

외부 컴퓨터에서는 한글깨짐 여전히 발생함

 

 

4. UserDAO, BbsDAO 파일에서 jdbc 연결 수정 -> 실패

String dbURL = "jdbc:mysql://localhost:3306/BBS";

String dbURL = "jdbc:mysql://localhost:3306/BBS?useUnicode=true&characterEncoding=UTF-8";

이렇게 수정했는데 여전히 한글깨짐 발생 

 

 

 

찾아보니 인코딩 과정이 꽤나 복잡하더라

어느 부분에서 문제가 발생하는지 알아야 해결이 쉬울 것 같음

일단 인코딩 과정이 어떻게 되는지 문제 발생 부분을 어떻게 확인할 수 있는지 확인하는 게 급선무일듯

 

 

 

5. 무한서치 결과 이클립스뿐만이 아니라 Mysql도 따로 utf8 설정을 해야 한다는 사실을 알아냈다.

강의를 급하게 따라가다보니 내가 설정을 한 건지 기억이 나지 않았다.

확인을 해보자 -> 실패

 

mysql 커맨드 클라이언트에

status 입력

 

characterset이 아래와 같이 설정되어 있다

 

변경해보자

 

1) 변경할 파일 위치확인

보통 c드라이브 - program data - mysql 폴더에 있다.

 

못 찾겠다면 

show variables where variable_name like "%dir";

입력

 

datadir                   | C:\ProgramData\MySQL\MySQL Server 5.7\Data\

위치 확인

 

 

숨긴항목을 표시하면 my.ini 파일을 찾을 수 있다.

 

 

my.ini 파일의 속성에 들어가서 

그룹 또는 사용자 이름 [편집] - Users 선택 후 - 사용권한을 모든 권한 허용해주고 확인을 누른다.

 

 

 

 

끝부분에 내용삽입

 

[client]
default-character-set=utf8

[mysqld]
character-set-client-handshake = FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set = utf8

 

 

 

 

2) Mysql 재시작

 

윈도우키 + S 누르고 서비스 입력해서 서비스앱 실행

→ Mysql 찾아서 마우스 우측 버튼 클릭 후 다시시작

 

3) 확인

utf8로 변경되었음을 확인할 수 있다.

 

 

6. Mysql 삭제 후 재설치

 

여전히 한글이 깨져서 출력되길래 status 입력하고 다시 정보확인 해보니 db가 라틴1? 로 되어 있었다.

재시작 후에도 해결되지 않아 my.ini 메모장에 다른 분의 조금 다르게 작성된 추가내용을 입력해봤다.

그리고 재시작을 했더니 발생한 에러들.. 해결과정

 

 

https://saintclair.tistory.com/74

 

에러 : Mysql 구동 에러 / 재시작 / Mysql 환경변수 설정

한글깨짐 에러를 해결하겠다고 mysql data 폴더에 있는 my.ini 를 편집했는데 한 번은 잘 되더니 두 번째 다시시작 때 mysql 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 일부 서비스는 다

saintclair.tistory.com

 

 

 

 

이렇게 해서 재시작을 했는데 이번엔 비밀번호가 다르다고 한다.

분명 맞는데 몇 번이나 입력했는데!

 

이것 저것 구글링해서 찾은 정보로 시도해봤지만 해결될 기미가 보이지 않는다.

이걸로 이렇게 시간을 허비하는 게 맞는 건가..?

대체 왜 안 되는 거지? 가끔 허무할 정도로 어이없게 해결되는 경우도 있어서 더이상 시간을 허비할 수 없다는 판단 하에 mysql을 삭제 후 재설치 했다.

 

 

(mysql 삭제 후 재설치 글 첨부)

 

https://saintclair.tistory.com/76

 

Mysql 삭제 후 재설치

1. 돌고래 아이콘 Mysql installer 실행 후 전체 항목 선택하고 remove 클릭 2. 제어판에서 mysql 관련 프로그램 삭제 3. C드라이브에 남아있는 mysql 관련 폴더 삭제 C:\Program Files C:\Program Files (x86) C:\ProgramDat

saintclair.tistory.com

 

 

mysql에 문제가 있어서 재설치 한 건데 한글 깨짐도 해결되었다.

신나긴 한데 원인을 알았으면 더 뿌듯했을듯 흑흑

 

근데 노트북에서도 mysql 새로 설치하고 실행했을 때 한글깨짐이 없었으니 

mysql 설치할 때나 데이터베이스 구축할 때 뭔가를 잘못하지 않았을까?..추측해본다

주니어의 의미없는 추측이지만..