[英]ANSI Encoding implementation for Silverlight
我需要在我的 Silverlight 应用程序中对某些代码页进行编码实现。 特别是我需要从 zip-archive 中读取非英语文件名(正在打开Application.GetResourceStream )。
Silverlight 仅包含 Unicode 编码(Encoding.UTF8、Encoding.Unicode、Encoding.BigEndianUnicode)。 Encoding.GetEncoding 为其他编码名称引发异常。
但我需要为某些 ANSI 代码页(特别是 866)编码 class 实现。 在桌面上我会通过 Encoding.GetEncoding(866) 得到它。
我在哪里可以获得最简单的实现?
ps 我知道这个问题与 Silverlight 几乎没有关系,但不提我会建议使用 Encoding.GetEncoding 我猜..
从http://en.wikipedia.org/wiki/Code_page_866您可以构建 map 并将您的东西转换为 UTF-8。
感谢@Bala_R,我得到了 866 代码页并写道:
private byte[] translateInto866(string fileName)
{
const byte startCode1 = 128; // А, 0410
const byte startCode2 = 224; // р, 0440
var result = new byte[fileName.Length];
int i = 0;
foreach (char c in fileName)
{
if (c >= 'А' && c <= 'п')
{
result[i] = (byte)(((byte)(c - 'А')) + startCode1);
}
else if (c > 'п' && c <= 'я')
{
result[i] = (byte)(((byte)(c - 'р')) + startCode2);
}
else
{
result[i] = (byte) c;
}
i++;
}
return result;
}
现在我们只需要了解使用什么代码页来编码文件名。 我们在清单中有它的 unicode 表示,在 zip 中有一些编码的表示。 找到合适的编码应该不是很难。 但就我而言,我只知道如果不是 utf8,那么它就是 866。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.