Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过TCP套接字发送unicode,endianness呢_C_Sockets_Unicode_Tcp - Fatal编程技术网

通过TCP套接字发送unicode,endianness呢

通过TCP套接字发送unicode,endianness呢,c,sockets,unicode,tcp,C,Sockets,Unicode,Tcp,我在c中读取了一个带有一些unicode符号(UTF8)的字符串。我读取的字符存储在3个字节中,所以这些字符不能存储在一个字节中,所以我担心当使用write和read函数通过TCP套接字发送这些字符时,它们的endianness。我是否需要对它们执行任何特殊操作,以确保从流中读取的机器正确解释这些unicode字符?将其作为字节数组发送。UTF8编码的字符串不应出现Endianness问题,因为这些字符串是面向字节的。例如,当您有两个字节并且需要将它们解释为单个值时,Endianness很重要。

我在c中读取了一个带有一些unicode符号(UTF8)的字符串。我读取的字符存储在3个字节中,所以这些字符不能存储在一个字节中,所以我担心当使用write和read函数通过TCP套接字发送这些字符时,它们的endianness。我是否需要对它们执行任何特殊操作,以确保从流中读取的机器正确解释这些unicode字符?

将其作为字节数组发送。UTF8编码的字符串不应出现Endianness问题,因为这些字符串是面向字节的。例如,当您有两个字节并且需要将它们解释为单个值时,Endianness很重要。如果您必须单独解释这两个字节,那么endianness不是问题

更多信息:

问:UTF-8编码方案是否与 底层处理器是小端还是大端

A:是的。由于UTF-8被解释为一个字节序列,因此没有 使用16位或16位的编码形式存在的endian问题 32位代码单元。如果BOM与UTF-8一起使用,则它仅用作 用于区分UTF-8与其他编码的编码签名-it 与字节顺序无关。[自动对焦]


字符串是UTF8编码的是什么意思?这个UTF8字符存储为3个字节@马匠:我的意思是,绳子本身并不意味着什么,对吗?当你们有文本时,它必须以某种方式存储在计算机上。它的存储方式取决于您使用的编码,例如UTF 8,所以您的意思是,在通过TCP传输此类字符串时,我不应该担心Endian的大小?@HorseSMith:Endian仅适用于大于1字节的数值。UTF-8不受endian的影响,因为它是一种8位编码方案,而UTF-16和UTF-32分别是16位和32位编码方案。UTF-8使用1、2、3或4个8位编码单元对给定的Unicode码点进行编码,因此它不会受到endian的影响。UTF-16使用1或2个16位编码单元进行编码,而UTF-32使用1个32位编码单元进行编码,因此它们在单个编码单元上都存在endian问题。这就是为什么定义了UTF-16LE、UTF-16BE、UTF-32LE和UTF-32BE编码。