libc中的字符编码?

libc中的字符编码?,c,encoding,C,Encoding,libc中需要什么字符编码?例如,gethostname(字符名、大小\u t namelen);以char作为参数。name参数是否应以utf8(保持ascii完整)或普通ascii或其他格式编码 C是否还要求任何字符编码方案?所有字符串函数(widechar函数除外)仅支持本机字符集,例如Unix/Linux/Windows上的ASCII或IBM大型机/中端计算机上的EBCDIC。 char使用ASCII wchar\u t是unicode的标准C数据类型 使用和来处理宽字符。char应该

libc中需要什么字符编码?例如,gethostname(字符名、大小\u t namelen);以char作为参数。name参数是否应以utf8(保持ascii完整)或普通ascii或其他格式编码

C是否还要求任何字符编码方案?

所有字符串函数(widechar函数除外)仅支持本机字符集,例如Unix/Linux/Windows上的ASCII或IBM大型机/中端计算机上的EBCDIC。

  • char使用ASCII
  • wchar\u t是unicode的标准C数据类型

使用和来处理宽字符。

char
应该是7位兼容的ASCII编码(但我找不到任何明确的参考)。但C标准要求集合中的字符必须相同。如果我理解正确,那么

char a = 'a';
wchar_t aw = L'a';
if (a == (char)aw) {
    // should be true
}

该标准没有提到任何关于UTF-8的内容。

您可能需要使用第三方库,例如。
这个库是可移植的,非常有用,它还提供正则表达式、数据结构等。

如何在非英语环境中使用这些函数?此外,我认为libc没有与所有char*函数等价的wchar\u t*函数。你必须转换自己或获得一些库来完成这项工作-请参阅此处的更多内容:。无论如何,你不能用UTF-8命名你的主机,对吗?wchar\u t使用什么编码?它是UCS2还是utf16?@chappar:它是实现定义的。实现定义的?我以为它是应用程序定义的?(在同一操作系统上使用同一编译器编译的两个应用程序有权使用不同的编码,这与C的“低级”一致。)ASCII不是强制性的,实现可能也使用EBCDIC。可能是因为答案没有帮助。在这种情况下,GLib会有什么帮助?