Silverlight上是否有用于Shift JIS编码的库?

Silverlight上是否有用于Shift JIS编码的库?,silverlight,text,encoding,Silverlight,Text,Encoding,在Silverlight上有没有可以用来解码Shift JIS文本的库?我在这里找到了一些信息: 这是上面链接中的C#代码示例(归功于Peter Bromberg)。我不能肯定它是否能在Silverlight中工作。我想这一切都取决于Encoding.GetEncoding(“shift jis”)是否在SL中可用: public class FileConverter { const int BufferSize = 8096; public static void Mai

在Silverlight上有没有可以用来解码Shift JIS文本的库?

我在这里找到了一些信息:

这是上面链接中的C#代码示例(归功于Peter Bromberg)。我不能肯定它是否能在Silverlight中工作。我想这一切都取决于Encoding.GetEncoding(“shift jis”)是否在SL中可用:

public class FileConverter
{
    const int BufferSize = 8096;

    public static void Main(string[] args)
    {
        if (args.Length != 2)
        {
            Console.WriteLine 
                ("Usage: FileConverter <input file> <output file>");
            return;
        }
        //NOTE: you may need to use " Encoding enc = Encoding.GetEncoding("shift-jis"); " for non-standard code pages
        // Open a TextReader for the appropriate file
        using (TextReader input = new StreamReader 
               (new FileStream (args[0], FileMode.Open),
                Encoding.UTF8))
        {
            // Open a TextWriter for the appropriate file
            using (TextWriter output = new StreamWriter 
                   (new FileStream (args[1], FileMode.Create),
                    Encoding.Unicode))
            {

                // Create the buffer
                char[] buffer = new char[BufferSize];
                int len;

                // Repeatedly copy data until we've finished
                while ( (len = input.Read (buffer, 0, BufferSize)) > 0)
                {
                    output.Write (buffer, 0, len);
                }
            }
        }
    }
}
公共类文件转换器
{
const int BufferSize=8096;
公共静态void Main(字符串[]args)
{
如果(参数长度!=2)
{
控制台写入线
(“用法:文件转换器”);
返回;
}
//注意:对于非标准代码页,可能需要使用“Encoding enc=Encoding.GetEncoding(“shift jis”);”
//打开相应文件的文本阅读器
使用(TextReader输入=新的StreamReader)
(新文件流(args[0],FileMode.Open),
编码(UTF8)
{
//打开相应文件的TextWriter
使用(TextWriter输出=新StreamWriter)
(新文件流(args[1],FileMode.Create),
编码(Unicode)
{
//创建缓冲区
char[]buffer=新字符[BufferSize];
内伦;
//重复复制数据,直到完成
而((len=input.Read(buffer,0,BufferSize))>0)
{
输出写入(缓冲区,0,len);
}
}
}
}
}

我能够在不到一个小时内将Mono的实现移植到.NET。这是需要移植的(最小?)类集(按依赖项排序):

  • 此外,需要复制以下文件(加载到
    I18N.CJK.CodeTable
    的构造函数中):


    实现“shift_jis”编码的类是
    I18N.CJK.CP932
    。请注意,它必须手动实例化,而不是通过
    Encoding.GetEncoding()

    谢谢,但是不行,因为“shift-jis”编码在Silverlight中不可用。显然,Silverlight中只有UTF-8和UTF-16编码可用。