Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
C# 编码为ASCII和UTF8的字符串具有不同的长度!_C#_.net_Encoding - Fatal编程技术网

C# 编码为ASCII和UTF8的字符串具有不同的长度!

C# 编码为ASCII和UTF8的字符串具有不同的长度!,c#,.net,encoding,C#,.net,Encoding,我正在读一个流,想知道为什么UTF-8编码的字符串比ASCII短 ASCIIEncoding encoder = new ASCIIEncoding(); UTF8Encoding enc = new UTF8Encoding(); string response = encoder.GetString(message, 0, bytesRead); //4096 string responseUtf8 = enc.GetString(message, 0, bytesRe

我正在读一个流,想知道为什么UTF-8编码的字符串比ASCII短

  ASCIIEncoding encoder = new ASCIIEncoding();
  UTF8Encoding enc = new UTF8Encoding();   
  string response = encoder.GetString(message, 0, bytesRead); //4096
  string responseUtf8 = enc.GetString(message, 0, bytesRead);  //3955

可能消息包含一些无法在中编码为单字节的字符。

可能消息包含一些无法在中编码为单字节的字符。

UTF-8处理的字符串与ASCII不同:在UTF-8上,每个字符的长度可以是1、2或3个字节。但是,ASCII将每个字节视为一个字符。C UTF-8编码器计数格式良好的UTF-8字符,而不是字节。我希望这对您有所帮助。

UTF-8处理的字符串与ASCII不同:在UTF-8上,每个字符的长度可能为1、2或3字节。但是,ASCII将每个字节视为一个字符。C UTF-8编码器计数格式良好的UTF-8字符,而不是字节。我希望这对您有所帮助。

因为在解码字节时,AscienceODing会用问号替换大于127 0x7F的所有字节?这是一个字符,而UTF8Encoding将UTF-8多字节序列正确解码为单个字符。例如,三个字节232170158将成为单个字符語.

因为在解码字节时,Asciencoding会用问号替换大于127 0x7F的所有字节?这是一个字符,而UTF8Encoding将UTF-8多字节序列正确解码为单个字符。例如,三个字节232170158将成为单个字符語.

这是因为流实际上是UTF-8编码的。如果它是ASCII编码的,字符串将是相同的

当读取为ASCII时,表示0-127代码集之外的字符的字节组合将被读取为单独的字符,它们看起来像垃圾

当读取为UTF-8时,字节组合将被解码为正确的字符,每个多字节组合将作为单个字符结束


注意:字符串没有编码,编码的是流。您可以将来自ASCII或UTF-8的流解码为Unicode字符串。

这是因为流实际上是UTF-8编码的。如果它是ASCII编码的,字符串将是相同的

当读取为ASCII时,表示0-127代码集之外的字符的字节组合将被读取为单独的字符,它们看起来像垃圾

当读取为UTF-8时,字节组合将被解码为正确的字符,每个多字节组合将作为单个字符结束


注意:字符串没有编码,编码的是流。您可以将来自ASCII或UTF-8的流解码为Unicode字符串。

我认为这是正确的。请注意,Asciencoding没有错误检测,但UTF8Encoding有。正如文档中所述,它没有错误检测。所以,它会很高兴地将毫无意义的ASCII字节解码成问号。@Matthew:这和UTF8编码有什么不同?它会很高兴地将UTF-8没有意义的字节序列“解码”成U+FFFD…@Timwi,正如我之前所说的,有错误检测,这意味着你可以告诉它抛出一个异常。@Matthew:我明白了,你说的是构造函数上的一个布尔参数。这在“它有错误检测”中是不清楚的。而且,我不认为这与这个答案有什么关系……我认为这是正确的。请注意,Asciencoding没有错误检测,但UTF8Encoding有。正如文档中所述,它没有错误检测。所以,它会很高兴地将毫无意义的ASCII字节解码成问号。@Matthew:这和UTF8编码有什么不同?它会很高兴地将UTF-8没有意义的字节序列“解码”成U+FFFD…@Timwi,正如我之前所说的,有错误检测,这意味着你可以告诉它抛出一个异常。@Matthew:我明白了,你说的是构造函数上的一个布尔参数。这在“它有错误检测”中是不清楚的。而且,我不明白这和这个答案有什么关系。。。