Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (seongtaejeong at gmail.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)
(시리즈 글이 3개 있습니다.)
개발 환경 구성: 48. 개발자 PC 환경 - 유니코드(Unicode)를 위한 설정
; https://www.sysnet.pe.kr/2/0/762

.NET Framework: 2122. C# - "Use Unicode UTF-8 for worldwide language support" 설정을 한 경우, 한글 입력이 '\0' 문자로 처리
; https://www.sysnet.pe.kr/2/0/13354

개발 환경 구성: 728. 윈도우 환경의 개발자를 위한 UTF-8 환경 설정
; https://www.sysnet.pe.kr/2/0/13775




윈도우 환경의 개발자를 위한 UTF-8 환경 설정

제가 예전에는,

개발자 PC 환경 - 유니코드(Unicode)를 위한 설정
; https://www.sysnet.pe.kr/2/0/762

자신이 개발하는 프로그램의 유니코드를 강제할 수 있도록 "Locale(English)" 환경을 설정하라고 했었는데요, 현재는 저도 이 방법을 쓰지는 않고 대신 다른 설정을 사용하고 있습니다. ^^

근래에는 UTF-8이 대세이기 때문에 마이크로소프트도 이에 대한 지원을 꽤나(?) 오래 전부터 추가해 두었는데요, 예전에도 한번 소개한 적이 있습니다.

"Beta: Use Unicode UTF-8 for worldwide language support"
; https://www.sysnet.pe.kr/2/0/11559#utf8

제어판 / "Region"을 선택해 뜨는 창에서 "Administrative" 탭을 눌러 "Language for non-Unicode programs" 그룹에 있는 "Change system locale..." 버튼을 누르면,

cmd_support_han_4.png

위의 그림과 같이 "Use Unicode UTF-8 for worldwide language support" 옵션이 있습니다. 저 글을 2018년에 썼는데, 6년여가 지난 지금도 여전히 "베타" 딱지를 떼지 못했군요. ^^; (아마도 제가 아는 범위 내에서는, 마이크로소프트의 제품군에 이렇게 오래 베타를 유지한 기능은 이게 처음인 것 같습니다.)

저 옵션을 선택하면 (부팅이 필요합니다.), "명령행" 윈도우의 기본 코드 페이지가 65001(UTF-8)로 설정됩니다.

// "Use Unicode UTF-8 for worldwide language support" 옵션을 선택한 환경 (영문/한글 윈도우 무관)
c:\temp> chcp
Active code page: 65001

// 저 옵션을 선택하기 전이라면, 영문 윈도우의 경우 437, 한글 윈도우의 경우는 949가 기본값입니다.

따라서, 당연히 기존에 ks_c_5601-1987 인코딩으로 저장돼 있던 모든 문서들의 한글(및 기타 non-ascii 문자)이 깨져 나오는 문제가 발생합니다. (실수로 해당 파일을 메모장 등으로 열었다가 저장이라도 하면 모든 한글 문자를 망가뜨리는 것이니 주의가 필요합니다.)

그나마 근래에는 Visual Studio를 비롯해 메모장까지도 기본 저장을 UTF-8로 하기 때문에 한글이 깨지는 경우를 많이 볼 수는 없을 것입니다.

어쨌든, 일단 위와 같이 설정한 PC에서는 이후부터 모든 파일을 UTF-8로 (기본) 저장하는 효과를 얻기 때문에 code page 문제로 인한 한글(및 기타 유니코드 문자들이) 깨지는 문제를 해결할 수 있습니다. 결국, 여러분이 만드는 프로그램 역시 자연스럽게 유니코드를 지원하도록 만들 수밖에 없는 효과를 얻게 되는 것이니, 개발자라면 필수로 설정해야 할 옵션이 되겠습니다. ^^

제 경우에 저 글을 썼던 2018년 즈음부터 이 옵션을 켜서 쓰고 있는데, 일부 문제는 있었지만 그런대로 근래에는 대부분의 프로그램들이 유니코드를 지원해 딱히 큰 문제는 없었던 것 같습니다. (그러고 보니, 증권 관련 OpenAPI 다룰 때 증권사 측의 프로그램에 한글이 깨지는 문제가 있어 불편했던 적이 있습니다.)

아직 이 옵션을 적용하지 않은 상태로 이 글을 읽는 개발자가 있다면??? 지금 당장 제어판을 열어 꼭 설정하시길 바랍니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 10/23/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




1  2  3  [4]  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13843정성태12/13/20244372오류 유형: 938. Docker container 내에서 빌드 시 error MSB3021: Unable to copy file "..." to "...". Access to the path '...' is denied.
13842정성태12/12/20244516디버깅 기술: 205. Windbg - KPCR, KPRCB
13841정성태12/11/20244850오류 유형: 937. error MSB4044: The "ValidateValidArchitecture" task was not given a value for the required parameter "RemoteTarget"
13840정성태12/11/20244424오류 유형: 936. msbuild - Your project file doesn't list 'win' as a "RuntimeIdentifier"
13839정성태12/11/20244842오류 유형: 936. msbuild - error CS1617: Invalid option '12.0' for /langversion. Use '/langversion:?' to list supported values.
13838정성태12/4/20244589오류 유형: 935. Windbg - Breakpoint 0's offset expression evaluation failed.
13837정성태12/3/20245039디버깅 기술: 204. Windbg - 윈도우 핸들 테이블 (3) - Windows 10 이상인 경우
13836정성태12/3/20244610디버깅 기술: 203. Windbg - x64 가상 주소를 물리 주소로 변환 (페이지 크기가 2MB인 경우)
13835정성태12/2/20245046오류 유형: 934. Azure - rm: cannot remove '...': Directory not empty
13834정성태11/29/20245270Windows: 275. C# - CUI 애플리케이션과 Console 윈도우 (Windows 10 미만의 Classic Console 모드인 경우) [1]파일 다운로드1
13833정성태11/29/20244958개발 환경 구성: 737. Azure Web App에서 Scale-out으로 늘어난 리눅스 인스턴스에 SSH 접속하는 방법
13832정성태11/27/20244900Windows: 274. Windows 7부터 도입한 conhost.exe
13831정성태11/27/20244372Linux: 111. eBPF - BPF_MAP_TYPE_PERF_EVENT_ARRAY, BPF_MAP_TYPE_RINGBUF에 대한 다양한 용어들
13830정성태11/25/20245173개발 환경 구성: 736. 파이썬 웹 앱을 Azure App Service에 배포하기
13829정성태11/25/20245134스크립트: 67. 파이썬 - Windows 버전에서 함께 설치되는 py.exe
13828정성태11/25/20244431개발 환경 구성: 735. Azure - 압축 파일을 이용한 web app 배포 시 디렉터리 구분이 안 되는 문제파일 다운로드1
13827정성태11/25/20245079Windows: 273. Windows 환경의 파일 압축 방법 (tar, Compress-Archive)
13826정성태11/21/20245311닷넷: 2313. C# - (비밀번호 등의) Console로부터 입력받을 때 문자열 출력 숨기기(echo 끄기)파일 다운로드1
13825정성태11/21/20245648Linux: 110. eBPF / bpf2go - BPF_RINGBUF_OUTPUT / BPF_MAP_TYPE_RINGBUF 사용법
13824정성태11/20/20244742Linux: 109. eBPF / bpf2go - BPF_PERF_OUTPUT / BPF_MAP_TYPE_PERF_EVENT_ARRAY 사용법
13823정성태11/20/20245273개발 환경 구성: 734. Ubuntu에 docker, kubernetes (k3s) 설치
13822정성태11/20/20245138개발 환경 구성: 733. Windbg - VirtualBox VM의 커널 디버거 연결 시 COM 포트가 없는 경우
13821정성태11/18/20245067Linux: 108. Linux와 Windows의 프로세스/스레드 ID 관리 방식
13820정성태11/18/20245232VS.NET IDE: 195. Visual C++ - C# 프로젝트처럼 CopyToOutputDirectory 항목을 추가하는 방법
13819정성태11/15/20244477Linux: 107. eBPF - libbpf CO-RE의 CONFIG_DEBUG_INFO_BTF 빌드 여부에 대한 의존성
13818정성태11/15/20245251Windows: 272. Windows 11 24H2 - sudo 추가
1  2  3  [4]  5  6  7  8  9  10  11  12  13  14  15  ...