2010-01-11 82 views
5

嗨,初學者在編程和網絡開發。我有一個關於ASCII和Unicode編碼的問題。C#ASCII或Unicode

在MSDN和其他網站的例子請執行下列操作:

byte[] byteData = Encoding.ASCII.GetBytes(data); 

這是因爲這些代碼示例是老了嗎?它不應該是:

byte[] byteData = Encoding.Unicode.GetBytes(data); 

感謝您的輸入!

回答

10

這取決於 - 你想要的結果是在ASCII或UTF-16?當你想要另一個時,每個都是錯誤的。

如果您正在談論某種網絡協議,您需要必須找出協議所期望的字符編碼。使用錯誤的編碼,會發生不好的事情。

當然,ASCII有大量的限制 - 它是基於英語的(只有拉丁字符,沒有重音符號),但它對於某些協議是正確的。其他人可能會使用UTF-16(Encoding.Unicode),UTF-8或其他編碼......或者他們會讓您在協議中自己指定編碼。

+0

即時實施客戶端/服務器的兩端,所以我決定。 即時通訊作爲選擇,因爲它是能夠適應不同的語言。我可能錯了! – iTEgg 2010-01-11 14:05:16

+7

@ikurtz:我建議在大多數情況下使用UTF-8而不是Unicode,因爲它通常會減少流量。也有例外(遠東字符通常最終在UTF-8中變得更大),還有其他缺點(你不能直接從代碼點數量計算二進制數據的大小),但它通常是一個好主意IMO 。 – 2010-01-11 14:13:03

+0

關於獲取郵件大小的非常好的一點!我明白他們爲什麼使用ASCII。 – iTEgg 2010-01-11 14:17:22