업데이트:

업데이트:

우리는 텍스트 표시 문제를 해결하기 위해 유니코드가 아닌 응용 프로그램의 코드 페이지를 변경할 수 있는 AppLocale이라는 응용 프로그램이 있다는 것을 알고 있습니다.

그런데 이런 프로그램이 있어요.오른쪽 표시 코드 페이지UTF-8은 다음을 의미합니다.해당 텍스트는 UTF-8로 표시되어야 합니다., 대신 Windows네이티브 코드 페이지로 표시합니다.그리고 텍스트를 읽을 수 없게 만듭니다. 거의 모든 국가와 지역이 있지만 UTF-8이 없기 때문에 재미있어 보입니다. 프로그래머가 영어를 사용하고 영어가 아닌 텍스트 표시 문제 테스트를 무시할 수 있기 때문에 이것이 버그라고 생각합니다. 프로듀서가 고칠 것 같지 않고 제가 직접 고치고 싶어요.

AppLocale과 같은 소프트웨어를 사용하여 비유니코드 출력을 UTF-8로 설정할 수 있습니까? 유니코드가 아닌 기본 출력은 기본 코드 페이지입니까? 네이티브 코드 페이지를 UTF-8로 설정하려면 어떻게 해야 합니까?

답변1

이전에는 불가능했기 때문에

Microsoft는 UTF-8 로케일이 _mbsrev문자당 2바이트 이하로 사용되는 멀티바이트 인코딩을 가정하기 위해 작성되었기 때문에 일부 기능을 손상시킬 수 있다고 주장했습니다. 따라서 지금까지 GB 18030(cp54936) 및 GB 18030(cp54936) 및 UTF-8을 로케일로 설정할 수 없습니다.

https://en.wikipedia.org/wiki/Unicode_in_Microsoft_Windows#UTF-8

그러나 거기에는"베타: 전세계 언어 지원을 위해 유니코드 UTF-8 사용"로케일 코드 페이지를 UTF-8로 설정하기 위한 Windows 10 Insider Build 17035 이후의 확인란

베타: 전 세계 언어 지원을 위해 유니코드 UTF-8 사용

또한보십시오

즉, 현재 지원에는 여전히 버그가 있습니다.


업데이트:

Microsoft는 또한 위의 UTF-8 베타 플래그를 설정하지 않고도 프로그램이 UTF-8 로케일을 사용할 수 있는 기능을 추가했습니다. 당신은 사용할 수 있습니다/execution-charset:utf-8또는/utf-8MSVC로 컴파일할 때 옵션을 사용하거나 appxmanifest에서 ActiveCodePage 속성을 설정할 수 있습니다.

적절한 C 런타임과 연결하여 이전 Windows 버전에서 UTF-8 로캘을 사용할 수도 있습니다.

Windows 10 빌드 17134(2018년 4월 업데이트)부터 Universal C Runtime은 UTF-8 코드 페이지 사용을 지원합니다. 이는 charC 런타임 함수에 전달된 문자열이 UTF-8 인코딩의 문자열을 예상한다는 것을 의미합니다. UTF-8 모드를 활성화하려면 를 사용할 때 코드 페이지로 "UTF-8"을 사용하십시오 setlocale. 예를 들어 setlocale(LC_ALL, ".utf8")로케일에는 현재 기본 Windows ANSI 코드 페이지(ACP)를 사용하고 코드 페이지에는 UTF-8을 사용합니다.

...

Windows 7 등 Windows 10 이전 OS에서 이 기능을 사용하려면 다음을 사용해야 합니다.앱-로컬 배포또는 Windows SDK 버전 17134 이상을 사용하여 정적으로 연결하세요. 17134 이전의 Windows 10 운영 체제에서는 정적 링크만 지원됩니다.

UTF-8 지원

답변2

Microsoft에 대해 읽은 내용 중Wikipedia의 AppLocale 도구, 도구는 코드 페이지를 UTF-8로 변경할 수 없습니다.유니코드가 아닌 응용 프로그램에서만 작동합니다., 그러나 UTF-8은 유니코드 표준의 일부입니다.

내부적으로 비ASCII 문자의 유니코드 처리는 비유니코드 문자와 크게 다릅니다. 따라서 비유니코드 코드 페이지 간 변경은 가능하지만(AppLocale이 수행하는 작업) 유니코드와 비유니코드 간 변경은 불가능합니다. 제작자가 만든 응용 프로그램을 수정하지 않은 유니코드입니다.

답변3

여기서 언급하자면, Windows 10 17133에는 이제 전세계 지원을 위해 UTF-8을 사용할 수 있는 베타 옵션이 있습니다. 하지만 현재로서는 유니코드가 아닌 프로그램에는 도움이 되지 않지만 유니코드가 아닌 프로그램의 로케일을 변경할 수 있는 팝업에 배치됩니다.

따라서 그들은 유니코드가 아닌 프로그램의 로케일을 변경해야 하는 필요성을 없애기 위해 뭔가 작업을 하고 있는 것 같습니다.

관련 정보