2010-11-19 2 views
2

У меня возникла проблема с кодировкой.Как проверить кодировку в java?

Например, у меня есть сообщение в формате XML, форматом которого является «UTF-8».

<message> 
     <product_name>apple</product_name> 
     <price>1.3</price> 
     <product_name>orange</product_name> 
     <price>1.2</price> 
     ....... 
    </message> 

Теперь это сообщение поддерживает несколько языков:

  • традиционный китайский (big5),
  • Простой китайский (гб)
  • Английский (UTF-8)

    И это только изменит кодировку в определенных полях.
    Например (традиционный китайский),

    蘋果 1.3 橙 1.2 .......

    только "蘋果" и "橙" используют BIG5, "<product_name>" и "</product_name>" являются все еще используя utf-8.
    <price>1.3</price> и <price>1.2</price> используют utf-8.

Как узнать, какое слово использует различная кодировка?

ответ

2

Похоже, что тот, кто предоставляет XML, предоставляет неверный XML. Они должны использовать последовательное кодирование.

http://sourceforge.net/projects/jchardet/files/ - довольно хороший эвристический детектор штриховок. Это порт того, который используется в Firefox, для обнаружения кодирования страниц, в которых отсутствует кодировка в типе контента или спецификации.

Вы можете использовать это, чтобы попытаться вычислить кодировку подстрок в некорректном XML-файле, если вы не можете заставить провайдера исправить свой вывод.

1

Вы должны использовать только одну кодировку в одном XML-файле. в кодировке UTF_8 есть копии символов big5.

0

Поскольку я не могу заставить провайдера исправить выход, поэтому я должен сам справиться с этим, и я не могу использовать библиотеку расширений в этом проекте.

Я только могу решить, что, как это,

String str = new String(big5String.getByte("UTF-8")); 

перед выводом на экран сообщение.

+0

Это нехорошее решение, но я знаю только этот способ решения проблемы. Есть ли у кого-нибудь другие лучшие решения? – Roy