Любая бесплатная библиотека Java для кодирования из Unicode в CP866?

Я пытаюсь распечатать на устройстве, которое поддерживает только кодировку CP866.

К сожалению, устройство, с которого я печатаю (устройство Android), не поддерживает CP866, в результате чего "abc".getBytes("CP866") бросая UnsupportedEncodingException,

Итак, я думаю, я должен сделать Unicode в CP866 кодирую себя Есть ли бесплатная библиотека Java, которая делает это?

4 ответа

Решение

http://msdn.microsoft.com/en-us/goglobal/cc305166 содержит список символов; если не сработает заранее подготовленный параметр, написание кода для перебора массива, переводящего символы Юникода в байты, подходящие для CP866, не должно занимать много времени.

Согласно документации Oracle, Cp866 является поддерживаемой кодировкой для Java 7. Так что либо

  • вы используете старую версию Java, которая не поддерживает Cp866 (например, см. комментарий @Joachim!!!), или
  • среда выполнения Java не распознает имя, которое вы используете. (Каноническое имя для кодировки "Cp866" не "CP866".)

ОБНОВЛЕНИЕ - вряд ли будет последним. Из того, что я могу понять из источника, механизм поиска кодировки, используемый стандартным "провайдером", нечувствителен к регистру.

Рекомендации:

Класс java.nio.charset.Charset поддерживает как Cp866, так и, конечно, Unicode. Я думаю, вы могли бы использовать это с encode а также decode методы.

Мне нужно было кодировать строку с Cp866 в Android. Вы можете использовать библиотеку Java с составленными классами charset. Cp866 среди них.

Это ссылка: http://www.doc.ic.ac.uk/~awl03/cgi-bin/trac.cgi/miro/browser/trunk/gcc/libjava/classpath/gnu/java/nio/charset

Если вы хотите расширить класс Charset и добавить свой собственный Charset: Java NIO. Глава 6 Наборы символов

Другие вопросы по тегам