Чтение кодировки Windows-1252 в Windows Phone 8
В Windows я могу использовать Encoding.GetEncoding ("Windows-1252") через.NET, чтобы получить кодировку кодовой страницы "Windows-1252". К сожалению, этот вызов вызывает исключение ArgumentExtception в эмуляторе Windows Phone 8, указывая, что имя кодировки недопустимо. Я осмотрел MSDN, но не нашел ничего полезного. Кто-нибудь знает о том, какие кодировки доступны в Windows Phone 8 и какое новое название кодировки "Windows-1252"?
И да, мне известен альтернативный вариант использования кодировки "iso-8859-1" и ручной замены символов в диапазоне 129–159. Но я пытаюсь избежать этого, если это возможно.
Большое спасибо, Майкл
3 ответа
Я не уверен, что это все еще работает, но помните, что это было полезно. Этот инструмент генерирует исходный код для однобайтовых кодовых страниц
http://www.hardcodet.net/2010/03/silverlight-text-encoding-class-generator
Я надеюсь, что сгенерированный источник работает в подмножестве Windows Phone библиотеки базовых классов.
Как ясно сказано в сообщении об исключении, подмножество фреймворка в Windows Phone не поддерживает Windows-1252. Как вы говорите, использование Latin-1 (ISO-8859-1) - это способ сделать это.
В качестве альтернативы вы можете реализовать кодировку вручную, что я бы не рекомендовал.
Как насчет попробовать MultiByteToWideChar(Win32 API)?
Пример кода здесь.
http://bluewatersoft.cocolog-nifty.com/blog/2012/12/windows-phone-8.html
Это образец для CP-932(Shift JIS). Создайте новый проект "Компонент времени выполнения Windows Phone"(C++), затем скопируйте код. Измените константу "CP_SJIS" для вас, пожалуйста.
Кроме того, я не знаю, эффективен ли CP-1252(Windows-1252) на WP8.