Получение данных из многокодированного файла - PullRequest
1 голос
/ 23 февраля 2012

Я пишу парсер для писем Thunderbird.

Введите: У меня есть файл с загрузкой электронных писем (основная часть написана на ANSI - WINDOWS 1250, но содержимое находится в utf-8 или iso-8859-2, оно написано в разметке Content-Type почты).

Выход: Коллекция сообщений содержимого (тела).

Вот что я делаю:

  1. Считать весь файл в переменную byte []. (все еще ANSI)
  2. Преобразовать его в строку. (utf-16, но в байтах, как в ANSI) - мне нужно преобразовать в строку сейчас, потому что мне нужно перейти к следующей точке (разделить кучу сообщений -> единственное сообщение)
  3. Разделите группу сообщений на отдельные сообщения и добавьте каждое сообщение в коллекцию (utf-16).
  4. Проверить Content-Type сообщения.
  5. Используя JavaMail API, я использую mail.getContent (думаю, utf-16, но я не уверен в кодировке внутри).
  6. Это моя проблема: у меня есть строка в UTF-16, я думаю, и ее содержимое, например, iso-8859-2, что мне теперь делать?

Я использовал Charset и новую String (byte [], String (имя charset)), но ни одна из моих попыток не прошла.

Моя попытка:

  1. Конвертировать финальную строку из UTF-16 -> UTF-8 (потому что это то же количество байтов, что и в 8859-2)
  2. Получите байты из utf-8 и закодируйте его как ANSI
  3. Декодировать ANSI в utf-8
  4. Кодировать utf-8 в ISO-8859-2 (или оставить его, если он уже был utf-8)
  5. Декодирование из ISO-8859-2. Но это не дает мне хороших результатов.

как я могу с этим справиться? Слишком много расшифровок для меня, и я чувствую головокружение.

Ввод (это был файл cp1250, но я преобразовал его в utf-8,):

  From - Thu Dec 08 15:06:14 2011
(some mail header stuff....)
Content-Type: text/html; charset="iso-8859-2"
<table border="0" cellspacing="0" width="600"><tbody><tr><th class="ffield2"><span class="cald-word">clich&eacute;d</span> </th><td class="field1"><br>
banal; <b>banalny<b>
<br>
She made a <span class="cald-word">clich&eacute;d remark about the importance of friendship.</span>
<br>
<b>Wygԯsiԡ jakѶ banalnѠuwagꡯ wadze przyjaݮi . <br>
<b>
<b> <b><br>
</td></tr></tbody></table>
From - Thu Dec 08 15:42:09 2011
Content-Type: text/html; charset=utf-8
(some mail header stuff....)
<table border="0" cellspacing="0" width="600"><tbody><tr><th class="ffield2">nosiness</th><td class="field1"><br>
<br>
interest in somebody else's business; <b>wścibstwo<b>
<br>
Nosiness is something I can't stand, so stop asking such questions.
<br>
<b>Nie znoszę wścibstwa, więc przestań zadawać takie pytania. <b><b> <br>
<b>
</td></tr></tbody></table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...