Windows 'WCHAR_T와 GCC/Linux 중에서 (반드시 프로그래밍적으로) 변환하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/236125

  •  04-07-2019
  •  | 
  •  

문제

이 Windows WCHAR_T 문자열이 있다고 가정합니다.

L"\x4f60\x597d"

그리고

L"\x00e4\x00a0\x597d"

UTF-32 AFAIK 인 GCC/Linux WCHAR_T 형식으로 변환하고 싶습니다 (반드시 프로그래밍 방식으로는 일회성이 아닙니다). 어떻게해야하나요? (일반적인 설명은 좋지만,이 구체적인 케이스를 기반으로 한 예제도 도움이 될 것입니다)

캐릭터 변환 사이트로 나를 안내하지 마십시오. "end ar

도움이 되었습니까?

해결책

캐릭터 변환에 가장 많이 사용되는 라이브러리 중 하나는 ICU 라이브러리입니다. http://icu-project.org/ 예를 들어 약간의 부스트에 의해 사용됩니다 http://www.boost.org/ 도서관.

다른 팁

UTF-16 (시각적 C ++ wchar_t 양식)에서 UTF-8, 그런 다음 UTF-8에서 UCS-4 (GCC)까지 wchar_t 양식), 수용 가능한 대답이 있습니까?

그렇다면 Windows에서 사용할 수 있습니다. WideCharToMultiByte 기능 (함께 CP_UTF8CodePage 변환의 첫 부분에 대한 매개 변수). 그런 다음 결과 UTF-8 문자열을 프로그램에 직접 붙여 넣거나 추가로 변환 할 수 있습니다. 여기 한 사람이 어떻게했는지 보여주는 메시지입니다. 또한 자신의 코드를 작성하거나 수동으로 수행 할 수 있습니다 (UCS-4로 UCS-4로 정확하게 변환하는 방법에 대한 섹션이있는 공식 사양은 찾을 수 있습니다. 여기). 더 쉬운 방법이있을 수 있습니다. 나는 아직 Linux의 변환에 지나치게 익숙하지 않습니다.

캐릭터에 대해서만 걱정하면됩니다 xd800과 xdfff 사이에 포함됩니다. 다른 모든 캐릭터는 0으로 채워질 때 UTF-16에서 UCS-4로 정확히 동일하게 매핑되어야합니다.

Ignacio가 옳습니다. 희귀 한 중국어 (또는 멸종 된 스크립트)를 사용하지 않으면 매핑이 일대일입니다. (공식 "Lingo"는 "BMP 외부에 캐릭터가없는 경우"입니다.)

이것은 만일을 대비하여 알고리즘입니다. http://unicode.org/faq/utf_bom.html#utf16-3그러나 다시, 당신의 실제 사건에 대해서는 아마도 아마도 쓸모가 없을 것입니다.

유니 코드에서 무료 소스를 사용할 수도 있습니다 (ftp://ftp.unicode.org/public/programs/cvtutf)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top