Потеря данных при преобразовании UTF-8 XML в Latin-1? - PullRequest
0 голосов
/ 21 января 2010

Если я преобразую XML-документ в кодировке UTF-8 (с прологом XML, объявляющим кодировку UTF-8) в Latin-1 с использованием xmllint, произойдет ли потеря данных?

xmllint --encode iso-8859-1 --output test-latin1.xml test-utf8.xml

(данные в конечном итоге будут отображаться в формате HTML в кодировке ISO-8859-1)

Ответы [ 3 ]

2 голосов
/ 21 января 2010

Будет проблема, если в исходном XML-файле есть какие-либо символы Юникода, кроме Latin1. Но я подозреваю, что xmllint обнаружит это и откажется делать перевод.

Единственный случай, когда я могу подумать о том, где вы можете получить интересные преобразования, - это если файл содержит акцентированные символы - у юникода есть несколько способов их представления, которые могут быть сопоставлены с одним представлением в Latin1.

1 голос
/ 21 января 2010

Если есть потери данных, зависит от содержимого файла. Если все символы в нем принадлежат подмножеству iso-8859-1, все будет в порядке. Если он содержит другие символы, например от кириллицы или древнеитальянского языка вы их потеряете. xmllint указывает на это (с кодом ошибки).

0 голосов
/ 21 января 2010

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

xmllint --encode utf-8 --output test-utf8-post.xml test-latin1.xml
...