2012-05-13 84 views
1

可能重複:
To which character encoding (Unicode version) set does a char object correspond?編碼字符

我有點不敢問這個,因爲我敢肯定,它被要求之前,但我不能找到它。它可能很明顯,但我從未學過編碼。

int Convert(char c) 
{ 
    return (int)c; 
} 

該方法產生了什麼編碼?我認爲這可能是ASCII碼(至少對於< 128),但做下面的代碼產生了...笑臉作爲第一個字符?什麼?絕對不是ASCII碼...

for (int i = 0; i < 128; i++) 
    Console.WriteLine(i + ": " + (char)i); 
+0

這可能會也可能不會回答您的問題:http://stackoverflow.com/questions/6549054/to-which-character-encoding-unicode-version-set-does-a-char-object-correspond – BoltClock

+0

它的確如此,謝謝。如何回答這個問題,或者你介意這樣做?對於那些稍後看到這個問題的人來說,它的UTF-16。我似乎無法找到utf-16中的字符表來驗證第一個是「笑臉」,但我認爲它們是正確的。 – khyperia

+0

我已經關閉它。 – BoltClock

回答

4

C#char使用UTF-16編碼。該language specification1.3類型和變量,說:在C#

字符和字符串處理使用Unicode編碼。 char類型表示一個UTF-16代碼單元,而字符串類型表示一系列UTF-16代碼單元。

UTF-16與ASCII重疊,因爲ASCII範圍0-127中的字符代碼與UTF-16中的字符代碼相同。程序輸出中的笑臉可能是您的控制檯在0-31範圍內解釋不可打印字符的方式。

+0

我會第二次預祝我的「打印不可打印的字符?」評論你的最新編輯。 – BoltClock

+0

@BoltClock也許我們應該爲自己的鑽石MODS競選獲得雙倍票! ;-) –

0

每個char是一個UTF-16編碼點。但是,您應該使用適當的Encoding類來確保unicode已標準化。請參閱 C# and UTF-16 characters