ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서버에서 한글 깨질 때 (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

     

    개발자 포럼 - NAVER Developers

     

    developers.naver.com

     

    자바 시스템의  default characterset 를 획득하여 사용하는데 내 서버의 자바는 utf-8이 아니었기에 한글이 깨졌던걸로...

     

    댓글

Designed by Tistory.