#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
созданный вами файл.