2012-11-05 28 views
3

我正在進行加密algotythm,我還需要加密德語單詞。所以我必須加密字符,例如:ü,ä或ö。將德文特殊字符放入字節數組

裏面我有一個功能:( 「?」 等等)

private static byte[] getBytesArray(string data) 
{ 
    byte[] array; 
    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); 
    array = asciiEncoding.GetBytes(data);    
    return array; 
} 

但是,當數據爲 「ü」,在陣列返回的字節是63。我怎樣才能返回ü字節?

我也試過:

private static byte[] MyGetBytesArray(string data) 
{ 
    byte[] array; 
    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); 

    Encoding enc = new UTF8Encoding(true, true); 
    array = enc.GetBytes(data); 

    return array; 
} 

但在這種情況下,我得到2個字節數組:195和188

+1

使用'UTF8Encoding',而不是'ASCIIEncoding'。 –

+0

根據定義,ASCII只能達到7Fh,並且這些德語字符在'7Fh'之上(請確認)。你可以試試'Encoding.Default'嗎? –

+0

您可以使用1141作爲編碼根據http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx – t3hn00b

回答

5

請更換System.Text.ASCIIEncodingSystem.Text.UTF8Encoding並在第一個示例中相應地重命名編碼對象。 ASCII基本上不支持德語字符,所以這就是爲什麼你必須使用其他編碼(UTF-8似乎是這裏最好的主意)。

請看看這裏:ASCII Encoding在這裏:UTF-8 Encoding

1

您既可以在編碼和解碼使用

System.Text.Encoding utf_8 = System.Text.Encoding.UTF8; 

// This is our Unicode string: 
string s_unicode = "abcéabc"; 

// Convert a string to utf-8 bytes. 
byte[] utf8Bytes = System.Text.Encoding.UTF8.GetBytes(s_unicode); 

// Convert utf-8 bytes to a string. 
string s_unicode2 = System.Text.Encoding.UTF8.GetString(utf8Bytes);