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