-
서버에서 한글 깨질 때 (Tomcat 8.5, CentOS 7)Error 2021. 12. 15. 12:12
[환경]
CentOS 7 - Tomcat 8.5 - Java 1.8
[상황]
로컬(이클립스) 에서는 한글이 잘 나오는데 서버에 올리면
??? 또는 �t� 요딴식으로 나오는 상황
네이버 데이터랩 쇼핑인사이트 API 테스트 중 한글 깨짐으로 데이터 받기 실패
그래서 아래의 방법으로 테스트
테스트 전에 서버 locale 확인
[root@localhost sysconfig]# locale LANG=ko_KR.UTF-8 LC_CTYPE="ko_KR.UTF-8" LC_NUMERIC="ko_KR.UTF-8" LC_TIME="ko_KR.UTF-8" LC_COLLATE="ko_KR.UTF-8" LC_MONETARY="ko_KR.UTF-8" LC_MESSAGES="ko_KR.UTF-8" LC_PAPER="ko_KR.UTF-8" LC_NAME="ko_KR.UTF-8" LC_ADDRESS="ko_KR.UTF-8" LC_TELEPHONE="ko_KR.UTF-8" LC_MEASUREMENT="ko_KR.UTF-8" LC_IDENTIFICATION="ko_KR.UTF-8" LC_ALL= [root@localhost sysconfig]#
ko_KR.UTF-8 확인
1. server.xml의 connector에 URIEncoding="UTF-8" 추가
-> 그래도 깨짐
2. web.xml 아래와 같이 filter class 를 등록
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
-> 그래도 깨짐
3. jsp 사용중이어서 utf-8 추가
<%@pagepageEncoding="UTF-8" contentType="text/html; charset-"UTF-8" %> <%@pagepageEncoding="UTF-8" contentType="text/html; charset=UTF-8 charset-"UTF-8" %>
어떤 분은 두번째로 하면 UTF-8 인코딩이 2번 되어 첫번째로 해결 되셨다고 함
-> 그래도 난 깨짐
4. 서버에서 톰캣 설치된 경로 /tomcat-8.5/bin 접속하여 setenv.sh 파일 생성
#!/bin/bash JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=\"utf-8\""
해당 코드 넣어주고 저장 - 서버 재시작
-> 해결
데이터랩 게시판에 나와 비슷한 문제를 겪은 분이 글을 남겼고 네이버 데이터랩 담당자가 답변을 달아줌
https://developers.naver.com/forum/posts/27574
자바 시스템의 default characterset 를 획득하여 사용하는데 내 서버의 자바는 utf-8이 아니었기에 한글이 깨졌던걸로...