Есть такой вопрос.
База FB2, кодировка и все поля CHARACTER SET NONE.

Работаю через .NET провайдер (т.е. внутрях программы всё в юникоде). Нужна поддержка всего двух языков (немецкий и английский).

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

Проблема в том что мы обнаружили что если записать строку с умляутами в базу, а потом считать её и сравнить с исходной, то строки будут разными.

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

Может ли кто прояснить алгоритм всех этих пееркодировок?

А также что означает в релизных нотах:

1) With other character sets, conversion is performed as CHARSET1->UNICODE->CHARSET2.

Это где и как?

2) With NONE/OCTETS the bytes are just copied: NONE/OCTETS->CHARSET2 and CHARSET1->NONE/OCTETS.

Я пробовал к базе подключиться с чарсетом UTF8 - всё подключилось. Но когда в запросе пытаюсь написать CAST("Field" AS VARCHAR(...) CHARACTER SET UTF8), то оно обламывается на умляутах с сообщением типа: string not well formated

3) Как можно использовать это:
When the character set of a CHAR or VARCHAR column is anything but NONE or OCTETS and the attachment character set is not NONE, the sqlsubtype member of an XSQLVAR pertaining to that column now contains the attachment (connection) character set number instead of the column's character
set.

Ответить