2011-10-02 2 views
3

저는 C++로 게임을 개발하고 있습니다. (실제로 저는 Gosu에서 SFML로 이식하고 있습니다). GNU Gettext를 i18n 시스템으로 사용하고 있습니다. 아시다시피 gettext는 로컬 인코딩 인 UTF8을 사용하여 char * 문자열을 반환합니다. 문제는 SFML에 넓은 문자열을 사용하여 áéíüñ과 같은 특수 문자를 인식해야한다는 것입니다.GNU Gettext 및 와이드 문자

그럼 어떻게 될까요? wstring을 gettext의 출력에서 ​​어떻게 만듭니 까? 어떤 종류의 wchar_t * w_gettext() 기능이 있으면 좋겠지 만 그렇지는 않습니다. 반복자를 전달하여 원래 string에서 wstring을 만드는 등의 몇 가지 옵션을 시도했지만 분명히 작동하지 않습니다.

답변

3

시스템의 좁은 멀티 바이트 인코딩과 와이드 문자 집합 (인코딩 세부 사항에 관계없이)간에 변환하려면 <cwchar>에있는 mbstowcs()wcstombs() 표준 C 함수를 사용하십시오. 이 주제에 관한 내 previous post은 다음과 같습니다. sample code입니다.

1

멀티 바이트 UTF-8 문자열을 와이드 문자로 변환 할 수 있습니다.

Windows의 경우 MultiByteToWideChar을 사용하십시오. Unix에서는 libiconv을 사용하십시오.