GNU Gettext和宽字符

时间:2011-10-02 22:32:02

标签: c++ internationalization gettext sfml

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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