Windows Phone 8从base64 iso 8859-2编码文本获取字符串 [英] Windows Phone 8 getting string from base64 iso 8859-2 encoded text
本文介绍了Windows Phone 8从base64 iso 8859-2编码文本获取字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有base64编码的字符串,结果是在iso-8859-2编码,我需要从中获得字符串。
I have base64 encoded string, result being in iso-8859-2 encoding and I need to get the string from it.
8 C#/ XAML .NET 4.5 App。
I'm woking on windows Phone 8 C#/XAML .NET 4.5 App.
我现在做的是:
private string decodeXML(string xml)
{
byte[] data = Convert.FromBase64String(xml); //I decode the base64 data
string decoded = Encoding.UTF8.GetString(data, 0, data.Length);
//and here get a string from it using UTF8, problem being the data are in "iso-8859-2"
return decoded;
}
所以我试过:
private string decodeXML(string xml)
{
byte[] data = Convert.FromBase64String(xml);
string decoded = Encoding.GetEncoding("iso-8859-2").GetString(data, 0, data.Length);
return decoded;
}
但我得到一个异常
System.ArgumentException was unhandled by user code
HResult=-2147024809
Message='iso-8859-2' is not a supported encoding name.
Parameter name: name
Source=mscorlib
ParamName=name
StackTrace:
at System.Globalization.EncodingTable.internalGetCodePageFromName(String name)
at System.Globalization.EncodingTable.GetCodePageFromName(String name)
at System.Text.Encoding.GetEncoding(String name)
.....and the rest of the stack trace...
如何获取字符串,并保留特殊字符?
How should I get the string from it with special characters preserved? (which way to use to get the string from it?)
推荐答案
这里是从 ISO 8859-2 更改为 String
。 未测试:
private readonly ushort[] iso8859_2 = {
0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, 0x00A8, 0x0160,
0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, 0x00B0, 0x0105, 0x02DB, 0x0142,
0x00B4, 0x013E, 0x015B, 0x02C7, 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD,
0x017E, 0x017C, 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, 0x0110, 0x0143,
0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, 0x0158, 0x016E, 0x00DA, 0x0170,
0x00DC, 0x00DD, 0x0162, 0x00DF, 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A,
0x0107, 0x00E7, 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, 0x0159, 0x016F,
0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 };
private string decodeXML(string xml)
{
byte[] data = Convert.FromBase64String(xml);
char[] decoded = new char[data.Length];
for (int i = 0; i < data.Length; i++)
if (data[i] < 128)
decoded[i] = (char)data[i];
else if (data[i] < 0xA0)
decoded[i] = '\0';
else
decoded[i] = (char)iso8859_2[data[i] - 0xA0];
return new string(decoded);
}
这篇关于Windows Phone 8从base64 iso 8859-2编码文本获取字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文