Всем добрый день. Столкнулся с проблемой.
Есть база в кодировке 1251, есть таблица с полем XML, туда нужно положить данные в кодировке UTF-8 что бы перекодирования не произошло. Все делают на C++ через libpq. Отправляю данные через параметры.
После того как зову PQExecParams он мне говорит что невалидная xmlка. Формат данных - бинарный выставлен, если выставить текстовый то вообще скажет что переконвертировать из 1251 в utf8 не может. В чем проблема или куда копать в какую сторону
XMLка самая обычная:
<?xml version="1.0" encoding="UTF-8"?>
<Файл Версия="1.0">
> Есть база в кодировке 1251,
> Есть база в кодировке 1251, есть таблица с полем XML, туда нужно положить данные в кодировке UTF-8 что бы перекодирования не произошло
Вот с этого места подробней. Как вы себе это представляете?
В UTF-8 символов много больше, чем в cp1251, каким образом они могут там сохраниться без перекодировки?
Кстати вот это читали:
http://postgresql.ru.net/manual/datatype-xml.html#AEN7509
В общем я бы начал без C++ и libpq. Для начала попробуйте руками через чистый SQL. Когда чего-то добъётесь, можно будет переходить на C++.
Как раз это и читал. SQLный
Как раз это и читал. SQLный запрос напрямую пытался провести через слона, специально в запрос вставлял INSERT.... и дальше кракозябры UTFные. Он мне ругался что нет в 1251 нет такого то символа из UTF-8 что и логично. Пока что ни в каком варианте не получится вставить xmlку UTFную в базу, это весь печально=(
Все становится еще интереснее
Все становится еще интереснее Заставил я таки принять его, но сначала ему не нравилось что в начале BOM наисан( кто не в курсе, означает что этот текст или файл находится в формате UTF ). Хрен с ним, убрал бом - и получил в итоге что на сервере файл лежит в UTF ( заголовок об этом свидетильсвует ), хотя я уже не знаю верить ему или нет. НО запрашивая обратно он мне отдает в кодировке 1251 как и написано в доке, спрашивается нафиг тогда нужен такой тип данных
Потому что года как три
Потому что года как три БОЛЬШИНСТВО работает с UTF-8. Если база в UTF-8, то и проблем становится значительно меньше.