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

时间:2011-02-17 11:21:47

标签: silverlight text encoding

是否有任何库可用于解码Silverlight上的Shift JIS文本?

2 个答案:

答案 0 :(得分:2)

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

  1. I18N.Common.Strings
  2. I18N.Common.MonoEncoding
  3. I18N.CJK.CodeTable
  4. I18N.CJK.DbcsConvert
  5. I18N.CJK.DbcsEncoding
  6. I18N.CJK.JISConvert
  7. I18N.CJK.CP932
  8. 此外,需要复制以下文件(在I18N.CJK.CodeTable的构造函数中加载):

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

答案 1 :(得分:-1)

我在这里找到了一些信息:
http://www.eggheadcafe.com/community/aspnet/14/14621/covert-shiftjis-to-unicode.aspx

这是上面链接中的示例C#代码(相信Peter Bromberg)。我不能肯定它会在Silverlight中运行。我想这一切都取决于SL中是否有Encoding.GetEncoding(“shift-jis”):

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);
                }
            }
        }
    }
}