0

我在一个独立于操作系统的文件管理器中工作,使用 SDL_ttf 来绘制我的文本。在 Windows 上,一切正常,但在 Linux 上,我必须使用 SDL_ttf 的 UTF8 函数,因为文件名可以是 UTF8 编码的。

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

4

3 回答 3

4

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

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

编译器不需要特定的 UTF-8 支持,只要它假定 8 位字符和任何具有语法意义的字符的常用 ASCII 值即可;换句话说,几乎可以肯定这不是问题。

于 2011-09-29T03:40:00.580 回答
1

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

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

于 2011-09-29T00:37:14.687 回答
1

C 应该有某种 Unicode 字符串文字语法。谷歌搜索“Unicode 编程 C”应该可以帮助您入门,两个看起来不错的教程是developerworks上的一个和cprogramming.com上的一个。

针对您的特定情况的一般方法是使用宽字符串文字L"Ää",然后将其转换为 UTF-8 和wcstrtombs().

于 2011-09-29T00:37:45.047 回答