德语特殊字符放入Byte数组

时间:2012-11-05 10:33:43

标签: c# .net winforms encoding special-characters

我现在正在加密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。

2 个答案:

答案 0 :(得分:6)

请将 System.Text.ASCIIEncoding 替换为 System.Text.UTF8Encoding ,并在第一个示例中相应地重命名编码对象。 ASCII基本上不支持德语字符,所以这就是你必须使用其他编码的原因(UTF-8似乎是最好的想法)。

请在此处查看:ASCII Encoding此处:UTF-8 Encoding

答案 1 :(得分: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);