2011-02-17 27 views

回答

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

此外,以下文件需要被复制(装载在I18N.CJK.CodeTable构造):

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

-1

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

这是从上面(学分彼得布朗伯格)的链接是C#示例代码。我无法确定它会在Silverlight中工作。我想这一切都取决于是否Encoding.GetEncoding(“SJIS”)是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); 
       } 
      } 
     } 
    } 
} 
+0

谢谢,但不,它不起作用,因为Silverlight中没有“shift-jis”编码。显然,Silverlight中只有UTF-8和UTF-16编码可用。 – 2011-02-17 16:37:14

相关问题