将unicode代码点转换为UTF-8的最简单方法

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

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

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

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

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

我在这里找到了这个小函数http://www.deanlee.cn/programming/convert-unicode-to-utf8/ ,虽然没有测试。