【发布时间】:2014-11-19 19:07:57
【问题描述】:
我在 c 中读取了一个带有一些 unicode 符号 (UTF8) 的字符串。我读取的字符存储在 3 个字节中,因此这些字符不能存储在单个字节中,所以当使用 write 和 read 函数通过 TCP 套接字发送时,我担心这些字符的字节序。我需要对它们做任何特别的事情来确保从流中读取的机器正确解释这些 unicode 字符吗?
【问题讨论】:
我在 c 中读取了一个带有一些 unicode 符号 (UTF8) 的字符串。我读取的字符存储在 3 个字节中,因此这些字符不能存储在单个字节中,所以当使用 write 和 read 函数通过 TCP 套接字发送时,我担心这些字符的字节序。我需要对它们做任何特别的事情来确保从流中读取的机器正确解释这些 unicode 字符吗?
【问题讨论】:
以字节数组的形式发送。对于 UTF8 编码的字符串,字节顺序不应该是问题,因为它们是面向字节的。例如,当您有两个字节并且需要将它们解释为单个值时,字节序很重要。如果您必须单独解释这两个字节,则字节顺序不是问题。
更多信息:http://unicode.org/faq/utf_bom.html
问:UTF-8 编码方案是否相同,无论是否 底层处理器是小端还是大端?
答:是的。由于 UTF-8 被解释为字节序列,因此没有 字节序问题,因为对于使用 16 位或 32 位代码单元。当 BOM 与 UTF-8 一起使用时,它仅用作 将 UTF-8 与其他编码区分开来的编码签名——它 与字节顺序无关。 [自动对焦]
【讨论】: