2011-11-23 40 views
-4

我正在從C代碼讀取文件。它看起來是空白字符是兩個字節長。是這樣嗎?是linux中的空白空間中的兩個字節(從C中讀取)

該文件的內容如下所示。我用二進制模式打開它。

11 22 43 34 
+0

是什麼讓你覺得空白是兩個字節? – GWW

+0

通常,空格字符是單個字節。在某些操作系統(Windows)中,C字符串中的「\ n」在文件中變成兩個字節。我相信它會變成「\ n \ r」,否則我可能會倒退。 –

+0

@Jim Clay:可能倒退了,通常是'\ r \ n' – BoltClock

回答

1

我的理解是,如果它的Unicode(0x0020),空格字符可以是2個字節。

但是,大多數文本仍然以ASCII或者與ASCII向後兼容的東西,這會使得Linux機器上的空白成爲單個字符。在Windows上,您可以像Jim Clay提到的那樣獲得\r\n組合。

+0

如果您使用的是雙字節Unicode編碼,例如UCS-2,則Unicode空格字符U + 0020只有兩個字節(在這種情況下, *所有*您的字符是兩個字節)。在UTF-8編碼中,一個空格仍然是一個字節。 –

+0

在UTF-8中,普通空間是一個字節。大多數(所有?)其他空間都是3個字節。 :-) –