달러 기호($)와 함께 세자리수로 한글이 깨지는 경우

달러 기호($)와 함께 세자리수로 한글이 깨지는 경우

''$'\354\235\264\353\240\245\354\204\234''와 같이 달러 기호($)와 함께 세자리수로 한글이 깨지는 경우 해결 방법을 알아보겠습니다. (feat. locale 설정)

깨져있는 한글 예시

1. 현재 설정되어 있는 locale 보기

locale 명령어를 입력하여 현재 설정되어 있는 locale 볼 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

아마 위와 같이 나올 것입니다. 지금 locale 설정이 en_US.UTF-8로 설정되어 있는 것을 알 수 있습니다. 이 때문에 한글이 깨지는 것입니다.

2. 사용 가능한 locale 목록 보기

locale -a 명령어를 통해 사용 가능한 locale 목록을 볼 수 있습니다.

1
2
3
4
5
6
7
$ locale -a
C
C.UTF-8
en_US
en_US.utf8
...
POSIX

여기서 ko_KR.UTF-8이 있나 확인 합니다. 만약 존재하지 않다면 다음 명령어를 통해 추가합니다.

$ locale-gen ko_KR.UTF-8

설정 가능한 locale 목록은 /usr/share/i18n/SUPPORTED 파일에서 확인할 수 있습니다.

3. Locale charset을 한글로 바꾸기

다음 명령어를 통해 Locale charset을 한글로 바꿉니다.

$ sudo update-locale LC_CTYPE=ko_KR.UTF-8

그 다음에 ssh 연걸을 끊었다가 다시 연결하면 다음과 같이 한글이 잘 나타나는 것을 알 수 있습니다.

잘 표시되는 한글 예시

Reference

부록. 다양한 LC_* locale 환경 변수들

우리는 위에서 LC_CTYPE locale 환경 변수만 변경했습니다. 다른 값들도 변경하면 다양한 방면으로 시스템에 영향을 미칩니다.

예를 들어 LC_TIME=ko_KR.UTF-8로 변경하면 date 명령어의 결과 값이 다음과 같이 달라집니다.

shell
1
2
3
4
5
6
7
# LC_TIME=en_US.UTF-8 인 경우
$ date
Sat Mar 12 12:24:41 KST 2022

# LC_TIME=ko_KR.UTF-8 인 경우
$ date
2022. 03. 12. (토) 12:28:30 KST

아래와 같이 locale 환경 변수는 다양한 kernel 함수에 영향을 미칩니다.

  • LC_TIME : 시간과 날짜의 표현(년, 월, 일에 대한 명칭 등)을 조절합니다. 영향을 미치는 함수: strftime(), strptime()
  • LC_MONETARY : 금액 표현(천단위 구분 문자, 소수점 문자, 금액 표시 문자, 그 위치 등)을 조절합니다. 영향을 미치는 함수: strfmon()
  • LC_NUMERIC : 금액이 아닌 숫자 표현(천단위, 소수점, 숫자 그룹핑 등)을 조절합니다. 영향을 미치는 함수: strtod(), atof().
  • LC_COLLATE : 문자열의 정렬 순서를 조절합니다. 영향을 미치는 함수: strcoll(), wcscoll(), strxfrm()

더 자세한 정보는 IBM 문서, cpp 문서, 커피닉스 문서를 참고해주세요.

달러 기호($)와 함께 세자리수로 한글이 깨지는 경우

https://blog.hyunsub.kim/Server/Locale-Korean/

Author

Hyunsub Kim

Posted on

2022-03-12

Licensed under

댓글