Re[3]: Кодировки
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 28.10.02 16:58
Оценка:
Здравствуйте Xenia, Вы писали:

X>Здравствуйте Коваленко Дмитрий, Вы писали:


X>

КД>>На сколько я понимаю UTF-8, при корректном содержимом первоначального XML ты бы не смогла увидеть русские буквы — они были бы двухсимвольными абро-кадабрами.

КД>>Попробуй его отконвертировать через MultiByteToWideChar(CP_ACP,) / WideCharToMultiByte(CP_UTF8,...) и подсунуть полученный текст.


X>Я не совсем поняла что вы имеете в виду под "корректным" xml файлом, и у меня такой еще вопрос — если xml файл был создан (программно) под windows 98, но processing instruction была усатановлена


X>
X><?xml version="1.0" encoding="utf-8"?>
X>


X>То в итоге какая там получилась кодировка? может в этом вся проблема.


Давай по-порядку.
  1. encoding="utf-8" означает, что содержимое этого XML определено в кодировке UTF-8. Так?
  2. В этой кодировке символы выше 127 представляются в виде последовательности байт. То есть русские буквы превратятся в "нерусские". Все что ниже 127 останется как есть. То есть английские буквы будут читаемые
  3. В твоем XML русские буквы — читаемые. То есть представлены в кодировке win1251.
  4. Парсер XML, беря твои данные, видит что они в UTF-8 и начинает их конвертировать в UCS-2 — это нормальный 2-х байтный UNICODE. Но UTF-8 это жесткий формат который чувствителен к ошибкам. Русские буквы с кодом >127 однозначно воспринимаются как ошибка и поэтому парсер возвращает ошибку.

Я предлагаю тебе попробовать "руками" переконвертировать твой XML в UTF-8 и подсунуть этот текст серверу. Если пройдет, то будем думать, что делать с твоей (программной) генерацией XML.

CP_UTF8 поддерживается NT4/2000 и выше. Если у тебя их нет под рукой — могу выслать конвертор в исходных текстах (С++)
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.