2013-06-17 2 views
2

Я пытаюсь напечатать на устройстве, которое поддерживает только кодировку CP866.Любая бесплатная java-библиотека для кодирования с Unicode на CP866?

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

Итак, я предполагаю, что я должен сделать Unicode до CP866, кодируя себя. Есть ли бесплатная java-библиотека, которая делает это?

+0

Согласно [этой странице] (http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html) CP866 поддерживается вне -box при каждой установке Oracle Java Runtime. Какой JRE/JDK вы используете? Какая версия? –

+0

Sidenote: «freeware» - это ... древний термин с очень конкретным значением. Вряд ли какое-либо программное обеспечение в эти дни выпущено как бесплатная. Вы * вероятно * ищете либо «открытый источник», либо «бесплатное программное обеспечение» (или просто «свободно доступное» программное обеспечение). –

+0

1.6, потому что мое отправляющее устройство - телефон Android –

ответ

1

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

+0

Оказалось, я потратил на это меньше времени, чем на поиск любой библиотеки. Большое спасибо! –

3

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

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

UPDATE - это вряд ли будет последним. Из того, что я могу сделать из the source, механизм поиска набора символов, используемый стандартным «провайдером», нечувствителен к регистру.

Ссылки:

+1

В Java 5 эта кодировка была [предоставлена ​​'charsets.jar'] (http://docs.oracle.com/javase/1.5.0/docs/guide/intl/encoding.doc.html), что не является всегда устанавливается (в зависимости от языковых настроек компьютера). [Java 6 уже имел его в 'rt.jar'] (http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html). –

+0

В Java 6 это поддерживается (согласно [документации] (http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html)). –

+0

Мое передающее устройство - Android-устройство. Он имеет Java 1.6. «abc» .getBytes («Cp866») выдает исключение. Так я использую любой другой код вместо этого? –

1

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

0

Мне нужно было закодировать строку с Cp866 в android. Вы можете использовать java-библиотеку с составленными классами кодировок. 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 Наборы символов