5

我现在正在加密算法,我还需要加密德语单词。所以我必须加密例如字符,例如:ü、ä 或 ö。

在里面我有一个功能:

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。

4

2 回答 2

7

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

请看这里:ASCII 编码和这里:UTF-8 编码

于 2012-11-05T10:40:38.407 回答
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);
于 2013-09-02T10:03:06.197 回答