Как определить новую кодировку в Java / Android?

#java #android #character-encoding

#java #Android #кодировка символов

Вопрос:

на Тайване у нас есть кодировка символов под названием «Unicode At One (UAO)», которая является расширением BIG-5, но не поддерживается Java и Android.
Кодовая страница находится в http://moztw.org/docs/big5/table/uao241-b2u.txt

Мой вопрос в том, как я могу создать строковый объект с данными массива байтов, используя эту кодировку?
Думаю, я расширю класс String и что-нибудь в нем сделаю, но я понятия не имею, как создать новую кодировку.

Комментарии:

1. Почему UTF-8 у вас не работает?

2. Можете ли вы предоставить какой-либо другой источник ссылок на эту кодировку? Кажется, я не могу найти ничего подходящего под названием «Завершение Unicode».

3. Лукас: Потому что тексты не кодируются UTF-8, и я хочу преобразовать их в UTF-8.

4. moztw.org/docs/big5 / Я обнаружил, что официальное английское название — «Unicode-at-on» (UAO).

5. Если / Когда вы закончите это, вероятно, было бы хорошей идеей опубликовать его как проект с открытым исходным кодом (например, в Google Code ). Я уверен, что сообщество Java оценило бы это.

Ответ №1:

Вы можете добавить свою собственную Charset реализацию, написав CharsetProvider и зарегистрировав ее через механизм обнаружения служб.

Вам нужно будет расширить Charset и реализовать его методы newDecoder and newEncoder , чтобы возвращать соответствующие CharsetDecoder и CharsetEncoder соответственно.

Комментарии:

1. Привет, извините, но не могли бы вы предоставить какую-нибудь ссылку на реальные образцы? Я не могу найти шаги для реализации, в документах API есть шаги, но нет описания того, как их выполнить.

2. @Romulus: Внедрение пользовательской кодировки — довольно редкая задача, поэтому я не думаю, что для этого есть какие-либо готовые примеры и / или руководства. Возможно, вы захотите заглянуть в исходный код и проверить существующие.

Ответ №2:

Я хотел бы добавить еще кое-что к ответу @Joachim.

Пример пользовательской кодировки содержится в книге Рона Хитченса «Java NIO«. Вы можете скачать образец кодировки и CharsetProvider с сайта поддержки. Обратите внимание, что вам нужно создать файл META-INF/services/java.nio.charset.spi.CharsetProvider, который содержит полный код дополнительного CharsetProvider и поместить его в jar созданный вами файл.