【问题标题】:GNU Gettext and wide charactersGNU Gettext 和宽字符
【发布时间】:2011-11-29 14:08:45
【问题描述】:

我正在用 C++ 开发一个游戏(实际上我正在将它从 Gosu 移植到 SFML)。我使用 GNU Gettext 作为 i18n 系统。如您所知,gettext 使用本地编码返回char * 字符串,通常是UTF8。问题是我需要为 SFML 使用宽字符串来识别特殊字符,例如áéíüñ

所以问题是:如何从 gettext 的输出中创建 正确的 wstring?如果有某种wchar_t * w_gettext() 函数,那就太好了,但没有。我尝试了一些选项,例如通过传递迭代器从原始string 创建wstring,但显然它不起作用。

【问题讨论】:

    标签: c++ internationalization gettext sfml


    【解决方案1】:

    要在系统的窄多字节编码与其宽字符集(与任何编码细节无关)之间进行转换,请使用<cwchar> 中的mbstowcs()wcstombs() 标准C 函数。这是我关于这个主题的previous post,还有一些sample code

    【讨论】:

      【解决方案2】:

      您可以将多字节 UTF-8 字符串转换为宽字符。

      在 Windows 上,使用 MultiByteToWideChar。在 Unix 上,使用libiconv

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多