GNU Gettext和宽字符

GNU Gettext and wide characters

本文关键字:字符 Gettext GNU      更新时间:2023-10-16

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

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

要在系统的窄多字节编码和其宽字符集(不知道任何编码细节)之间进行转换,请使用mbstowcs()wcstombs()标准C函数,参见<cwchar>。这是我之前关于这个主题的一篇文章,这里是一些示例代码。

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

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