сохранение символа Юникода в db2 iSeries с помощью .чистый набор данных

#.net #unicode #ado.net #db2 #dataset

#.net #юникод #ado.net #db2 #набор данных

Вопрос:

Я пытаюсь сохранить символ товарного знака (™) в базе данных DB2 iSeries. Кодировка столбца использует CCSID 1200, и вставка / выбор с использованием собственного sql работает нормально. Когда я пытаюсь сохранить его, используя .net dataset на C #, я получаю ошибку преобразования. Насколько я понял, поставщик данных DB2 отправляет по умолчанию в двоичном формате, так что это должно сработать.

Спасибо за вашу помощь!

Комментарии:

1. Определите явно, с идентификатором сообщения и текстом, что такое » ошибка преобразования «; лучше всего также поделиться фрагментом кода о том, что делается для его сохранения с использованием набора данных .net на C # . Отправка двоичного текста в столбцы с тегами UTF практически не поддерживается; аналогично приведению между ДВОИЧНЫМ и символьным типами практически невозможно. Примечание: DB2 Тег является общим, тогда DB2i как тег идентифицирует DB2 для IBM i [или для более старого DB2 для IBM i5 / OS, как ранее известный как DB2 / 400, DB2400 тег работает аналогично], в отличие от других вариантов DB2.

2. Единственная информация, которую я получаю, это «Произошла ошибка преобразования», не более того. Код является стандартным ADO.NET набор данных, ничего особенного. Я имел в виду, что SQL отправляется как SQL_BINARY, а не сам столбец (по крайней мере, так говорится в документации поставщика).

Ответ №1:

попробуйте вставить в столбец varchar следующим образом

 insert into jgrun.tmp2    
values x'39'              
  

Комментарии:

1. Намереваясь выполнить что? В виде 7-разрядного ASCII это будет цифра '9' , а в виде EBCDIC это будет управляющий символ. Конечно, это не может быть хитрым способом вставить в таблицу знак торговой марки ™ (U 2122) или UTF8 0xE2 0x84 0xA2 через C #?