我需要在ANSI C中编写一个程序,它将显示stdin的每个字符的UTF-8编码的十六进制值,而不管stdin使用的字符编码。例如,
AÀĀ
产量
41
C0
0100
C中是否有将字符编码转换为UTF-8的函数?
答案 0 :(得分:4)
除非你知道即将发生什么,否则你不能放弃UTF-8。如果你知道stdin的编码,你可以使用iconv
甚至ICU4C转换为UTF -8,然后以通常的方式转储十六进制。在某些情况下,您可以假设stdin符合LANG环境变量中指定的语言环境,但没有任何内容阻止某人运行:
yourprogram < SomeFileFullOfISO-2022-JP