Как да конвертирате знаци в CCSID 65535

Моето приложение е във VB.Net и използвам драйвера на IBM Client Access за достъп до данни на нашия IBM iSeries сървър.

Проблемът е, че някои символи не се превеждат автоматично в CCSID 65535 (т.е. символът €) и командата за актуализиране/вмъкване е неуспешна.

Не знам на кое ниво трябва да се реши проблема. На ODBC драйвера? В низа за свързване? Или трябва да създадем dll за преобразуване?

Благодаря ви предварително за помощта !


person Anne-Christine    schedule 28.01.2011    source източник
comment
По дефиниция CCSID 65535 са двоични данни и не трябва да се конвертират. Ако трябва да извлечете „символни“ стойности от него, е необходимо да знаете какъв CCSID са били данните, когато са били съхранени като CCSID 65535. Например, ако е бил ASCII CCSID, когато е влязъл, трябва да използвате същия ASCII CCSID, когато се опитате да го прочетете обратно. И ако е бил CCSID 37 (американски английски), когато е влязъл, ще бъде правилно само ако го прочетете като CCSID 37. CCSID 65535 обикновено е лоша идея за настройка за съхраняване на каквито и да е символни данни.   -  person user2338816    schedule 03.04.2014


Отговори (2)


Имате ли зададен BinAsChar=true в низа за връзка. Може също да се наложи да зададете CCSID или Host CCSID на такъв, който е валиден за вас, по подразбиране us 37, който е САЩ/Канада. Ето още информация за параметрите на низа за връзка за DB2:

http://msdn.microsoft.com/en-us/library/ee251805%28BTS.10%29.aspx

person Chris Haas    schedule 28.01.2011
comment
Да, полето BinAsChar е отметнато в ODBC администратора. Задаването на CCSID на 1148 (Белгия) на сървъра наистина решава проблема, но те не искат да заменят 65535 CCSID с друг! Следователно трябва да преобразувам символи по друг начин ... - person Anne-Christine; 28.01.2011
comment
Не можете ли да промените CCSID в низа за връзка, за да го конвертирате автоматично? Не съм много запознат с това, така че не знам дали това е опция или дори не. - person Chris Haas; 28.01.2011
comment
Всъщност iSeries не поддържа двубайтови знаци и изглежда никой доставчик на данни не ги преобразува в еднобайтови знаци. Единственото решение, което открихме досега, е да конвертираме знаци в приложението .Net. - person Anne-Christine; 25.10.2011
comment
Всъщност серията AS/400 (включително iSeries и по-нови) обработва добре двубайтови знаци. Файловете могат да имат двубайтови смесени с еднобайтови, ако е необходимо. Или една колона в таблица може да бъде двубайтова, а следващата колона може да бъде еднобайтова. Проблемът почти неизменно се свежда до неправилна настройка на системната стойност на QCCSID заедно с неправилни дефиниции на таблица и колона. - person user2338816; 03.04.2014

Настройте DSN с помощта на "iseries Access ODBC драйвер", като използвате инструмента за "ODBC администриране" на Windows. В настройката на конфигурацията изберете раздела за преобразуване и поставете отметка в квадратчето „Конвертиране на двоични данни (CCSID 65535) в текст.

person Enoch Norton    schedule 08.01.2015