我现在正在加密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。
答案 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);