c++ - Unicode 内 "lean"编码转换器

标签 c++ unicode

Windows 提供了编码转换函数(“MultiByteToWideChar”和“WideCharToMultiByte”),这些函数能够进行 UTF-8 与 UTF-16 之间的转换等。但我见过有人提供自制的 30 到 40 行函数,声称也可以执行 UTF-8/UTF-16 编码转换。

我的问题是,这种微型转换器的可靠性如何?如此少量的代码能否处理诸如将 UTF-16 代理对(例如 )转换为 UTF-8 单四字节序列(而不是错误地转换为一对三字节序列)等问题)?他们能否正确识别“未配对”的代理输入并提供错误?

简而言之,如此微小的转换器仅仅是玩具吗?还是可以认真对待?就此而言,为什么 unicode.org 似乎没有提供有关完成此类转换的算法的建议?

最佳答案

开源 ICU 库有 113 行 ucnv_fromUnicode_UTF8 代码 (source/common/ucnv_u8.c)。包括错误检查、正确的代理处理和一些评论。仅当您不喜欢命名约定时才应考虑使用其他名称。

关于c++ - Unicode 内 "lean"编码转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002084/

相关文章:

c++ - Visual C++ 中的运算符重载?

c++ - 如何在 C++ 中将命令行参数的整个集合(char**)作为只读传递?

c++ - 对 Base::object 链接器错误的 undefined reference @ c++ w/freeglut

c++将带有前导零的Int保存到String,而不显示它们

python - 从管理界面删除 ImageField 时出现 Django unicode 错误

windows - Windows 上的 Java Runtime Exec 因参数中的 Unicode 而失败

c++ - SDL_ttf 未正确运行

json - 从字符串中删除无效的 UTF-8 字符

asp.net - 有没有办法以编程方式确定字体文件是否具有特定的Unicode字形?

perl - 如何在 perl 中转储字符串以查看是否存在任何字符差异?