Utf8 Linux文件名和C.

时间:2011-09-29 00:29:59

标签: c linux gcc utf-8 sdl-ttf

我在OS独立文件管理器上工作,使用SDL_ttf绘制文本。 在Windows上,一切运行良好,但在Linux上我必须使用SDL_ttf的UTF8函数,因为文件名可以是UTF8编码。

这很有效,但是如果我有自己的C字符串(不是文件名),例如“Ää”,它将显示错误。有没有办法告诉gcc将我的字符串编码为UTF8?

3 个答案:

答案 0 :(得分:4)

对于UTF-8字符串文字,您不需要C编译器中的任何特殊内容。在您使用的API中对它的适当支持是另一回事,但这似乎已被涵盖。

要做的需要做的是确保您的源文件实际上以UTF-8保存,以便在您编辑或编辑时,非ASCII字符不会转换为其他编码保存文件。

编译器不需要特定的UTF-8支持,只要它假设8位字符和任何语法上重要的字符的常用ASCII值;换句话说,几乎肯定不是问题。

答案 1 :(得分:1)

默认情况下,gcc应将您的源代码和字符串文字解释为UTF-8。试试-fexec-charset

另请参阅:http://gcc.gnu.org/onlinedocs/gcc-4.0.1/cpp/Implementation_002ddefined-behavior.html#Implementation_002ddefined-behavior

答案 2 :(得分:1)

C应该具有某种Unicode字符串文字语法。谷歌搜索“Unicode编程C”应该让你开始,两个似乎很好的教程是developerworkscprogramming.com上的那个。

针对您的具体案例的一般方法是使用宽字符串文字L"Ää",然后使用wcstrtombs()将其转换为UTF-8。