Парсинг XML, закодированный в UTF-8 - PullRequest
1 голос
/ 02 августа 2009

Я работаю с дампом Wikipedia XML, который закодирован в UTF-8. Прямо сейчас я читаю все как std :: string, поэтому, когда я вывожу на экран std :: cout, посторонние символы отображаются как бред

Фактический процесс синтаксического анализа ищет только символы ASCII, но когда я записываю проанализированный файл на диск, я хочу сохранить посторонние символы. Другими словами, я хочу, чтобы выходные данные имели ту же кодировку, что и входные.

Можно ли использовать std :: string или мне придется использовать что-то вроде ICU? Библиотеки, на которые я смотрел, кажутся слишком сложными. Есть ли что-нибудь быстрое, что я могу использовать для этого?

Ответы [ 2 ]

1 голос
/ 02 августа 2009

UTF-8 является кодировкой по умолчанию для документов XML. Просто запишите это в свой файл. Нет смысла конвертировать его в Unicode и обратно. Если он случайно выведен на экран, отведите взгляд: -)

Удаление символов ASCII, таких как '{', не вызовет проблем. UTF-8 спроектирован таким образом, что ни один байт в многобайтовом символе не находится в диапазоне 0-127 и, следовательно, не может быть перепутан с символом ASCII.

1 голос
/ 02 августа 2009

Все время вы не разбиваете текст и символы не ascii, которые вы в безопасности. Ты можешь использовать std :: string без проблем.

Я имею в виду, когда вы не относитесь к содержимому XML как к попыткам сделать что-то вроде разделенных букв или слов, попытаться сделать текст в верхнем регистре и т. Д., У вас нет проблем.

...