【发布时间】:2019-07-10 16:42:56
【问题描述】:
我正在使用libxml/xmlwriter 在程序中生成 XML 文件。
const char *s = someCharactersFromSomewhere();
xmlTextWriterWriteAttribute (writer, _xml ("value"), _xml (s));
一般来说,我对s 的内容没有太多控制权,所以我不能保证它在UTF-8 中的格式是正确的。大多数情况下是这样,但如果不是,生成的 XML 格式将是错误的。
我想找到一种将s 转换为有效UTF-8 的方法,将s 中的任何无效字符序列替换为转义符或删除。
或者,如果有 xmlTextWriterWriteAttribute 的替代方案,或者我可以在初始化 XML 写入器时传入一些选项,这样它就可以保证它总是会写入有效的 UTF-8,那就更好了。
还有一点要提的是,该解决方案必须同时适用于 Linux 和 OSX。理想情况下,尽可能少地编写我自己的代码! :P
【问题讨论】:
-
如果字符串是 UTF-8 且可能包含无效字节,那么在迭代代码点之前,我发现来自 ICU 的 U8_NEXT_OR_FFFD() 很有用。
-
This 和以下功能似乎相关——但您需要测试自己是否可以帮助您...