是否有任何库可用于解码Silverlight上的Shift JIS文本?
答案 0 :(得分:2)
我能够在不到一个小时的时间内将Mono的实现移植到.NET。这是需要移植的(最小?)类集(按依赖性排序):
I18N.Common.Strings
I18N.Common.MonoEncoding
I18N.CJK.CodeTable
I18N.CJK.DbcsConvert
I18N.CJK.DbcsEncoding
I18N.CJK.JISConvert
I18N.CJK.CP932
此外,需要复制以下文件(在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);
}
}
}
}
}