C :如何支持UTF8中的替代字符



我们有一个编写UTF-8基本编码的应用程序,这支持UTF-8 BMP(3 bytes)。但是,有一个需要支持替代对的要求。

我在某个地方读到替代字符在UTF-8中不支持。是真的吗?

如果是的,那么将我的应用程序应用于UTF-16而不是UTF-8的默认编码的步骤是什么?

我没有代码段,因为整个应用程序是通过牢记UTF-8而不是替代字符来编写的。

我需要在整个代码中更改的项目是什么,以获得UTF-8中替代对的支持。或将默认编码更改为UTF-16。

我们有一个编写UTF-8基础编码的应用程序,这支持UTF-8 BMP(3个字)。

为什么不整个Unicode曲目(4个字节)?为什么仅限于3个字节?3个字节可为您提供仅至U FFFF的代码点的支持。4个字节可为您提供额外的1048576代码点的支持,一直到u 10ffff。

但是,有一个需要支持替代对的要求。

替代对仅适用于UTF-16,而不适用于UTF-8甚至UCS-2(UTF-16的前身)。

我在某个地方读到替代字符在UTF-8中不支持。是真的吗?

用于编码替代物的编码点可以在UTF-8中进行物理编码,但是它们是Unicode标准的保留,并且在UTF-16编码之外使用的是非法的。UTF-8不需要替代对,并且任何包含替代码头的解码Unicode字符串都应被视为畸形。

如果是的,那么将我的应用程序应用于UTF-16而不是UTF-8的默认编码的步骤是什么?

我们无法回答,因为您尚未提供有关项目的设置,您使用的编译器的任何信息,等等。

但是,您无需将应用程序切换到UTF-16。您只需要更新代码即可支持UTF-8的4字节编码,并确保在将16位数据转换为UTF-8时支持替代对。不要将自己限制为U FFFF作为最高的代码点。Unicode的编码点要比这更多。

听起来您的代码仅在转换到UTF-8的数据时处理UCS-2。只需更新该代码以支持UTF-16而不是UCS-2,就应该可以。

我们有一个编写UTF-8基础编码的应用程序,这支持UTF-8 BMP(3个字)。但是,有一个需要支持替代对的要求。

因此,将UTF-16编码字符串转换为UTF-8。文档:http://www.cplusplus.com/reference/codecvt/codecvt_utf8_utf16/

如果是的,那么将我的应用程序应用于UTF-16而不是UTF-8的默认编码的步骤是什么?

错误的问题。内部使用UTF-8。

我需要在整个代码中更改的项目是什么,以获得UTF-8中替代对的支持。或将默认编码更改为UTF-16。

见上文。对于入站数据,将UTF-16转换为UTF-8,并在必要时转换回UTF-16出站。

最新更新