2012-11-07 22 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