Firebird-английски - Как се прекодират символите
класически | списък | с резба |
Как се извършва преобразуването на знаци?
Има такъв въпрос. FB2 база, кодиране и всички полета НАБОР ЗНАЦИ НЯМА.
Работя чрез .NET доставчик (т.е. всичко в програмата е в Unicode). Изисква поддръжка само за два езика (немски и английски).
Една от функциите на програмата е да чете низове от XML и да ги записва в базата, а при следващи четения да ги сравнява с предварително написани низове.
Проблемът е, че открихме, че ако напишем низ с умлаути към основата и след това го прочетем и сравним с оригиналния, низовете ще бъдат различни.
Опитахме се да коригираме този случай локално, но имаме български Windows и всички умлаути ще бъдат заменени с български букви и някак си все още можем да познаем защо, но на немския сървър локалът е немски, но низовете все още не са равни на някакъв вид хрян.
Може ли някой да изясни алгоритъма за всички тези прекодирания?
И също какво означава това в бележките по изданието:
1) С други набори от символи преобразуването се извършва като CHARSET1->UNICODE->CHARSET2.
2) С NONE/OCTETS байтовете просто се копират: NONE/OCTETS->CHARSET2 и CHARSET1->NONE/OCTETS.
Опитах да се свържа с базата данни с UTF8 charset - всичко свързано. Но , когато се опитам да напиша CAST("Field" AS VARCHAR(. ) CHARACTER SET UTF8) в заявка, тя прекъсва на умлаути със съобщение като: низът не е добре форматиран
3) Как можете да използвате това: Когато наборът от символи на колона CHAR или VARCHAR е нещо друго освен NONE или OCTETS и наборът от знаци за прикачен файл не е NONE, sqlsubtype членът на XSQLVAR, отнасящ се до тази колона, сега съдържа номера на набор от знаци за прикачен файл (връзка) вместо набора знаци на колоната.