Linux server(CentOS 6.x, 7.x)

[CentOS 7] 서버 및 터미널, 파일인코딩 동일하게 설정하여 한글사용하고 한글파일보기(euc-kr 이든, utf-8)

IT로로 2019. 5. 15. 14:14

서버와 서버의 원격접속을 도와주는 터미널의 인코딩을 동일하게 맞추어도  한글이 계속 깨지는 파일이 존재,;; 그런갑다 하고 신경안쓰고 넘어 갔던적이 많은데 더이상은 안될것같아.... 정확하게 확인 후 블로그에 게시한다. 

1. 서버 인코딩 확인법 

# locale : 현재 쉘의 인코딩상태 출력 

echo $LANG  :  root든 , 사용자 계정이든 각각의 인코딩 방식을 다르게 지정가능하여  유저별로 들어가서 확인해야한다.  참고로 사용자계정의 ./.bash_profile 파일에 인코딩설정이 안되어 있다면 아래 설명하는 파일에 설정된 인코딩을 따라갈것이고 ./.bash_profile에 지정을 하면 지정된 인코딩이 지정된다.         

변경방법으로는 크게는 두가지가 있다. 

 

2. 서버 인코딩 변경법

2.1 export LANG="ko_KR.UTF-8 :  적용하면 명령어를 적용한 쉘에서 바로적용되지만 해당 쉘을 끄고 다시 접속했을시 유지 되지 않는다. 

2.2 /etc/locale.conf :  해당 파일에 접속하여 내용을 변경한다.  그래야 새로운 쉘을 열어도 적용된다. 

2.3 /etc/profile : 해당 파일에 명령에는 export LANG="ko_KR.UTF-8" 삽입하여도 쉘이나 리부팅시에도 내용이 변경되지 않고 유지된다. 쉘 재접속 시, 리부팅시 해당 파일을 읽으면서 쉘이 실행이 되기 때문에 locale.conf보다도 더 강력하다. 

 

3. 터미널툴은 여러 툴이 있으니 자기가 사용하는 툴 인코딩 변경을 알아서 확인하기 바란다. 

 

4. 파일의 인코딩 확인법

4.1 file -bi <파일명>

ex) # file -bi dockerfiletest02
text/x-shellscript; charset=iso-8859-1   <-- "euc-kr"과 같다

 

5. 파일의 인코딩 변경법

5.1 iconv -c -f <기존인코딩> -t <변경인코딩> test.php > test2.php

다음은 원래 euc-kr인코딩이었던 test.php 를  utf-8로 변환하여 test2.php 로 저장

ex) > iconv -c -f euc-kr -t utf-8 test.php > test2.php

# file -bi test2.php

text/html; charset=utf-8

**만약에 인코딩상태가 charset=unknown-8bit <- 이상태면, CP949 인 인코딩상태라는 것을 참고하자

**이렇게 세가지만 동일하면 무조건 한글은 깨지지 않고 서버상에서는 확인이 가능합니다.

** 톰캣로그를 깨지는 이슈시 톰캣 server.xml에 들어가 인코딩을 확인하여 맞춰야한다.