【问题标题】:Simplest way to convert unicode codepoint into UTF-8将 unicode 代码点转换为 UTF-8 的最简单方法
【发布时间】:2010-09-19 11:04:23
【问题描述】:

在 C 中将 Unicode 代码点转换为 UTF-8 字节序列的最简单方法是什么?想到的唯一方法是使用 iconv 从 UTF-32LE 代码页映射到 UTF-8,但这似乎有点矫枉过正。

【问题讨论】:

  • 我最终还是选择了 iconv。这可能看起来有点矫枉过正,但它似乎也是唯一不引入外部依赖项的真正解决方案。
  • 那么为什么不接受@JesperE 的回答并点赞。
  • 我认为当产品中的错误得到修复或引入更好的工具时使用“不再相关”,而不是当提问者不再对答案感兴趣时......

标签: c unicode utf-8


【解决方案1】:

我可以建议ICU吗?这是处理 i18n 问题的合理“行业标准”方式。

我自己没有使用过 C 版本,但我怀疑 ucnv_fromUnicode 可能是您所追求的功能。

【讨论】:

  • 我不会仅仅为了这个任务而介绍对一组新的非系统提供的库的依赖。不过,感谢您的建议。
【解决方案2】:

UTF8 的工作原理是将编码代码点的长度编码为编码字节的最高位。见http://en.wikipedia.org/wiki/UTF-8#Description

我在 http://www.deanlee.cn/programming/convert-unicode-to-utf8/ 找到了这个 C 中的小函数,不过没有测试。

【讨论】:

【解决方案3】:

Unicode 转换不是一项简单的任务。对我来说,使用 iconv 似乎并不过分。也许有一个 iconv 的库版本可以用来避免进行 system() 调用,如果这是你想要避免的。

【讨论】:

  • 对于这个方向,这是一个极其简单的任务。不需要图书馆。此外,iconv 指的是 C 接口和 POSIX 中的实用程序。我怀疑 OP 是在谈论 C 接口,这将是一个非常好的选择,但自己编写也不难。另一个方向(UTF-8 到代码点)很容易搞砸。
猜你喜欢
  • 2017-06-20
  • 1970-01-01
  • 2012-06-20
  • 2013-03-23
  • 1970-01-01
  • 2010-12-24
  • 2021-06-15
  • 1970-01-01
相关资源
最近更新 更多