Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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
Character encoding 有多少字节\n\r?_Character Encoding_Ascii_Newline_Byte - Fatal编程技术网

Character encoding 有多少字节\n\r?

Character encoding 有多少字节\n\r?,character-encoding,ascii,newline,byte,Character Encoding,Ascii,Newline,Byte,我有一个.NET应用程序正试图通过ftp传输文件,但我的结果是每行多出1个字节。我的行分隔符是Environment.NewLine,我相信它可以翻译成\n\r。那是多少字节?\n\r是2个字节。两个字节。一个用于\n,一个用于\r.它是2个字节,但在windows OSs上它应该是\r\n而不是\n\r,这取决于编码。在8位编码以及UTF-8中,它是2个字节。在UCS-2或UTF-16中为4字节。在UCS-4或UTF-32中为8字节 但问题是您可能是在ASCII模式而不是图像模式下进行FTPi

我有一个.NET应用程序正试图通过ftp传输文件,但我的结果是每行多出1个字节。我的行分隔符是Environment.NewLine,我相信它可以翻译成\n\r。那是多少字节?

\n\r是2个字节。

两个字节。一个用于\n,一个用于\r.

它是2个字节,但在windows OSs上它应该是
\r\n
而不是
\n\r
,这取决于编码。在8位编码以及UTF-8中,它是2个字节。在UCS-2或UTF-16中为4字节。在UCS-4或UTF-32中为8字节


但问题是您可能是在ASCII模式而不是图像模式下进行FTPing。

在ASCII编码中,\n是换行符0x0A(十进制10),\r是回车符0x0D(十进制13)

正如杰克已经说过的,正确的顺序是CR-LF,而不是相反


如果LF字符放置不正确,并且您正在以文本形式传输文件,则FTP可能会将其添加到流中。

FTP软件通常提供二进制和文本传输模式。在文本模式下,换行转换在传输过程中发生。这可能是有效的信息,具体取决于您的问题是什么以及您提问的原因。

要回答隐含的问题:

要在C#中使用二进制传输而不是ascii传输,请使用


我知道这是一个老问题,但为了未来的读者;您可以通过以下方式确定给定字符串(或字符串值)中的字节数:

Encoding.UTF8.GetByteCount("SomeString");
在这种情况下

Encoding.Unicode.GetByteCount(Environment.NewLine);
// OR
Encoding.Unicode.GetByteCount("\n\r");
.NET使用
Unicode
,除非另有规定;例如,使用
XmlSerializer
可以指定编码

在尝试计数字节数时,请记住使用正确的编码,因为每种编码的字节数不同:

  • 8位ASCII编码中的ASCII字符是8位(1字节),尽管它可以容纳7位
  • ISO-8859-1编码中的ISO-8895-1字符为8位(1字节)
  • UTF-8编码中的Unicode字符介于8位(1字节)和32位(4字节)之间
  • UTF-16编码中的Unicode字符介于16位(2字节)和32位(4字节)之间,尽管大多数常用字符采用16位。这是Windows内部使用的编码
  • UTF-32编码中的Unicode字符始终为32位(4字节)
  • UTF-8中的ASCII字符为8位(1字节),UTF-16中的ASCII字符为16位
  • ISO-8895-1(0xA0-0xFF)中的附加(非ASCII)字符将在UTF-8和UTF-16中占用16位

UCS-4和UTF-32不是一回事吗?@BlueRaja DannyPflughoeft:现在。但这并不一定总是正确的。
Encoding.Unicode.GetByteCount(Environment.NewLine);
// OR
Encoding.Unicode.GetByteCount("\n\r");