2012-11-07 20 views
0

幾天前,我已經問過關於德語特殊字符的問題。 我現在可以對ö,ä或ü等字符進行編碼和解碼。但是..一些字符還剩下,我也需要對它們進行編碼/解碼。將特殊字符編碼爲字節數組

例如,失敗字符:²³€μÜ○〜'§

這裏是代碼:

private static byte[] MyGetBytesArray(string data) 
    { 
     Encoding enc = new UTF8Encoding(true, true); 
     return enc.GetBytes(data); 
    } 

    private static string MyGetString(byte[] data) 
    { 
     Encoding enc = new UTF8Encoding(true, true); 
     return enc.GetString(data); 
    } 

我正在尋找一種解決方案進行編碼/解碼的所有字符。我正在編寫一個加密/解密算法,我不知道用戶將粘貼到程序中。我需要回饋完全一樣的。

感謝您的幫助,再次..

編輯: 好吧,UnicodeEncoding工作(我認爲)。這是我現在的加密/解密算法:/我仍然不確定發生了什麼事情(我用零來編碼,在Unicode編碼過程中,每個字符後面都有零),但編碼特殊字符的工具。至少那個測試是成功的:

string text = File.ReadAllText(opd.FileName, Encoding.Default); 
byte[] byt = getBytesArray(text); 
string text2 = getString(byt); 

if (text2 == text) 
{ 
    MessageBox.Show("OK"); 
} 
else 
{ 
    MessageBox.Show("FAIL"); 
} 

順便說一句。 Encoding.Default是正確的嗎?

+0

該代碼應該能夠將任何字符轉換爲/從UTF-8編碼的字節數組。你面臨的問題究竟是什麼?您列出的字符以何種方式失敗? –

回答

2

不幸的是,這些字符是Unicode,因此您將無法使用UTF8Encoding類。

嘗試使用UnicodeEncoding類代替。

+3

Unicode是一個_character set_,可以通過多個標準_encodings_將其轉換爲字節,如UTF-8和UTF-16。 'UnicodeEncoding'命名相當差,因爲它實際上代表了UTF-16編碼。 UTF-8能夠表示任何Unicode字符。 –

+0

嗯,我完全不工作:/ smallü,這在UTF8Encoding中使用UnicodeEncoding也不錯。 – Marshall

+0

@馬歇爾:看到我對你的問題的評論 - 你需要告訴我們你的意思是「失敗」。你如何使用你展示的代碼;你期望什麼結果,以及發生了什麼? –

2

嘗試使用UnicodeEncoding。

var encoding = new UnicodeEncoding(); 
return Write(encoding.GetBytes(s)); 
+0

^^我的編輯。謝謝 – Marshall