2009-01-16 26 views
3

從我的數據庫中我得到一個非常長的字符串,基本上是xml。 我需要將其更改爲一個字節數組。如何知道在將字符串轉換爲字節數組時使用何種編碼方案?

我無法解決潛在的編碼問題。

做這種轉換時需要注意什麼?

public static byte[] StringToByteArray1(string str) 
    { 
     return Encoding.ASCII.GetBytes(str); 
    } 

    public static byte[] StringToByteArray2(string str) 
    { 
     return Encoding.UTF8.GetBytes(str); 
    } 

Encoding.ASCII.GetBytes VS Encoding.UTF8.GetBytes

回答

0

,才應使用ASCII遺留代碼的兼容性,它確實是ASCII。請注意,這是7位,不支持擴展字符。

UTF-8通常可以(其他人可能不同意),並會給你8位的值。使用Unicode(UTF-16)是首選。

您對字節數組所做的操作將影響您是否需要ASCII,UTF-8或Unicode。

Here's a nice reference.

2

如果你正在處理的ASCII字符,那麼結果是相同的。另一方面,如果您的字符串中有非ASCII字符(例如π),那麼:以ASCII編碼的 這些將被替換爲「?」。

在UTF8中,它們將由一個(可能是幾個字節字符)表示。

可能值得指出的是,.NET內部使用UTF16對其字符串進行編碼。

一般來說,儘管你可能最好使用UTF8,除非你有特殊的理由不要。

1

當將字符串轉換爲字節並從應用程序中導出字符串時,使用什麼編碼取決於將要讀取這些字節並將它們解釋爲字符串的程序的100%。

例如,如果您正在編寫一個需要ASCII編碼文件的程序讀取的文件,那麼您必須使用ASCII,如果讀取程序需要CodePage 850,那麼您需要使用該編碼,如果它需要使用UTF-8,然後使用該編碼等。但是,如果你正在寫一個將被你自己的程序讀取的文件,我會建議使用你的UTF-8編碼,因爲這種編碼似乎正在成爲事實上的編碼。

最後,你應該知道什麼編碼是關於以及如何使用它。所以如果你還沒有閱讀它 - 你必須閱讀Joel Spolskys的文章"The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)"。這是一篇非常好的文章。閱讀!是的,你必須。

希望這會有所幫助!

相關問題