Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight的ANSI编码实现_C#_Silverlight_Encoding_Utf 8_Codepages - Fatal编程技术网

C# Silverlight的ANSI编码实现

C# Silverlight的ANSI编码实现,c#,silverlight,encoding,utf-8,codepages,C#,Silverlight,Encoding,Utf 8,Codepages,我需要在我的Silverlight应用程序中实现一些代码页的编码。特别是我需要从zip存档(正在打开)中读取非英语文件名 Silverlight只包含Unicode编码(Encoding.UTF8,Encoding.Unicode,Encoding.bigendianucode)。Encoding.GetEncoding为其他编码名称引发异常 但我需要一些ANSI代码页(尤其是866)的编码类实现。在桌面上,我可以通过Encoding.GetEncoding(866)获得它 在哪里可以获得最简单

我需要在我的Silverlight应用程序中实现一些代码页的编码。特别是我需要从zip存档(正在打开)中读取非英语文件名

Silverlight只包含Unicode编码(Encoding.UTF8,Encoding.Unicode,Encoding.bigendianucode)。Encoding.GetEncoding为其他编码名称引发异常

但我需要一些ANSI代码页(尤其是866)的编码类实现。在桌面上,我可以通过Encoding.GetEncoding(866)获得它

在哪里可以获得最简单的实现


p、 我知道这个问题与Silverlight几乎没有关系,但不提它,我建议我使用Encoding.GetEncoding我想..

从你可以建立一个地图并将你的东西转换成UTF-8。

从你可以建立一个地图并将你的东西转换成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;
    }
private byte[]translateInto866(字符串文件名)
{
常量字节startCode1=128;//А,0410
常量字节startCode2=224;//П,0440
var result=新字节[fileName.Length];
int i=0;
foreach(文件名中的字符c)
{

如果(c>='А'&&c'П'&&c多亏了@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;
    }
private byte[]translateInto866(字符串文件名)
{
常量字节startCode1=128;//А,0410
常量字节startCode2=224;//П,0440
var result=新字节[fileName.Length];
int i=0;
foreach(文件名中的字符c)
{

如果(c>='А'&&c'П'&&c@Bala R:谢谢!这变得非常简单。我希望你的回答是“回答”而不是评论。“ANSI”到底是什么意思?@tchrist的意思是“ANSI代码页”或“Windows代码页”。请看@Bala R:谢谢!这变得非常简单。我希望你的回答是“回答”而不是评论。这到底是什么意思“ANSI”的意思是?@tchrist,意思是“ANSI代码页”或“Windows代码页”。请参阅