【问题标题】:How to get UTF-8 encoded value of stdin?如何获取标准输入的 UTF-8 编码值?
【发布时间】:2012-01-02 21:18:16
【问题描述】:

我需要用 ANSI C 编写一个程序,该程序将显示标准输入的每个字符的 UTF-8 编码的十六进制值,而不管标准输入使用什么字符编码。例如,

AÀĀ

产量

41
C0
0100

C 中是否有将字符编码转换为 UTF-8 的函数?

【问题讨论】:

  • 这些值不是这三个字符的 UTF-8 值。 UTF-8 从不使用“01”或“00”作为字符表示的一部分。
  • 从您给出的示例来看,您希望打印 Unicode 代码点,而不是 UTF-8 十六进制值(即 41 c380 c480)。

标签: c utf-8 stdin stdio


【解决方案1】:

除非你知道输入的是什么,否则你不能把 UTF-8 输出。如果你知道 stdin 的编码,你可以使用iconv 甚至 ICU4C 来转换为 UTF-8 ,然后以通常的方式转储十六进制。在某些情况下,您可以假设标准输入符合 LANG 环境变量中指定的语言环境,但没有什么能阻止某人运行:

yourprogram < SomeFileFullOfISO-2022-JP

【讨论】:

  • 嗯,可以做一个合格的猜测。例如,除了 UTF-8 之外的任何东西都不太可能验证为 UTF-8。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
相关资源
最近更新 更多