我在OS独立文件管理器上工作,使用SDL_ttf绘制文本。 在Windows上,一切运行良好,但在Linux上我必须使用SDL_ttf的UTF8函数,因为文件名可以是UTF8编码。
这很有效,但是如果我有自己的C字符串(不是文件名),例如“Ää”,它将显示错误。有没有办法告诉gcc将我的字符串编码为UTF8?
答案 0 :(得分:4)
对于UTF-8字符串文字,您不需要C编译器中的任何特殊内容。在您使用的API中对它的适当支持是另一回事,但这似乎已被涵盖。
您要做的需要做的是确保您的源文件实际上以UTF-8保存,以便在您编辑或编辑时,非ASCII字符不会转换为其他编码保存文件。
编译器不需要特定的UTF-8支持,只要它假设8位字符和任何语法上重要的字符的常用ASCII值;换句话说,几乎肯定不是问题。
答案 1 :(得分:1)
默认情况下,gcc应将您的源代码和字符串文字解释为UTF-8。试试-fexec-charset
答案 2 :(得分:1)
C应该具有某种Unicode字符串文字语法。谷歌搜索“Unicode编程C”应该让你开始,两个似乎很好的教程是developerworks和cprogramming.com上的那个。
针对您的具体案例的一般方法是使用宽字符串文字L"Ää"
,然后使用wcstrtombs()
将其转换为UTF-8。