Character encoding 有多少字节\n\r?
我有一个.NET应用程序正试图通过ftp传输文件,但我的结果是每行多出1个字节。我的行分隔符是Environment.NewLine,我相信它可以翻译成\n\r。那是多少字节?\n\r是2个字节。两个字节。一个用于\n,一个用于\r.它是2个字节,但在windows OSs上它应该是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
\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");