我解析的XML文件可以包含不同语言的本地化字符串(目前只有英文和西班牙文,但将来可能是任何语言),API XML解析器通过UTF8编码的char *返回XML中的所有数据。在宽数据上使用窄字符串操作函数
对数据进行解析后(在其中搜索子串,连接字符串,确定子串长度等)需要对数据进行一些处理。
使用strlen,strcat等标准函数会很方便。由于我从XML解析器接收到的原始数据是char *,我可以使用这些标准字符串处理函数轻松完成所有操作。
但是,这些当然都假设和要求的字符串是NULL终止。 因此,我的问题是 - 如果您将宽数据表示为char *,那么可以在数据内部而不是在数据末尾出现NULL终止符?
即,如果某个特定语言的字符不需要2个字节来表示它,并且它在一个字节中表示,那么其他字节是否可以为NULL?
因此,如果解析器返回UTF8我可以在UTF-8数据上作为char *操作,然后在显示字符串之前调用UTF8toUTF16转换函数? (gui元素使用uint16 *(无符号短符号)参数)。 – Gruntcakes 2011-06-02 18:31:34
是的,但是当用UTF-8编码时,您不会知道字符串中有多少个字符。 – cababunga 2011-06-02 18:42:34
UTF-8是1到4个字节,由于Unicode代码点的范围不需要,所以5和6字节编码已被删除。 – 2011-06-02 18:55:48