Существует ли библиотека Silverlight для кодирования Shift JIS? - PullRequest
0 голосов
/ 17 февраля 2011

Есть ли какая-нибудь библиотека, которую можно использовать для декодирования текста Shift JIS в Silverlight?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Я смог перенести реализацию 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().

0 голосов
/ 17 февраля 2011

Я нашел некоторую информацию здесь:
http://www.eggheadcafe.com/community/aspnet/14/14621/covert-shiftjis-to-unicode.aspx

Это пример кода C # по ссылке выше (кредит Питера Бромберга).Не могу точно сказать, что он будет работать в 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);
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...