0

在我的代码中,我使用人名。例如其中之一是:

const char *translators[] = {"Jörgen Adam <adam@***.de>", NULL};

并包含 ö 'LATIN SMALL LETTER O WITH DIAERESIS'

当我编写代码时,使用什么格式是正确的

UTF-8:

Jörgen Adam

或者

UTF-8(十六进制):

J\xc3\xb6rgen Adam

更新:

带有名称的文本将在 GTK About 对话框中打印(译者姓名)

4

1 回答 1

2

答案很大程度上取决于这是在评论中还是在字符串中。

如果它在评论中,毫无疑问:您应该使用原始 UTF-8,所以它应该显示为:

/* Jörgen Adam */

如果读取文件的用户有一个错误配置/遗留系统,将文本视为 UTF-8 以外的东西,它会以其他方式出现,但这只是一个注释,所以它不会影响代码生成,丑陋的是他们的问题。

另一方面,如果 UTF-8 在字符串中,您可能希望正确解释代码,即使编译时字符集不是 UTF-8。在这种情况下,您最安全的选择可能是使用:

"J\xc3\xb6rgen Adam"

在那里使用 UTF-8 文字实际上也可能是安全的我不是 100% 清楚 C 对非宽字符串文字和编译时字符集的处理规范。但是,除非您可以说服自己它在形式上是安全的并且不会在您希望支持的编译器上被破坏,否则我只会坚持使用十六进制。

于 2013-09-14T14:28:07.453 回答