Возможно, , как и я Вы не использовали строго функцию JDBC (в моем случае запись в Dataqueue), поэтому автоматическое магическое кодирование к вам не относится поскольку мы общаемся через несколько API.
Моя проблема была похожа на проблему @ scottyab с определенными символами, которые не отображались. В моем случае пример кода, на который я ссылался, работал отлично, но запись строки XML в очередь данных привела к [замене на £.
Как веб-разработчик, работающий с уже существующей базой данных базы данных с десятилетиями информации, У меня не было просто возможности "исправить" "неправильную конфигурацию" , как предлагает другой комментатор.
Однако я смог увидеть, какой идентификатор набора кодированных символов я, вероятно, использовал, введя команду 400 для отображения информации о поле файла в известном исправном файле: DSPFFD *LIB*/*FILE*
.
Это дало мне хорошую информацию, включая конкретный набор CCSID:
![CCSID Identifier](https://i.stack.imgur.com/th03p.jpg)
После некоторой информации, запрашиваемой по CCSID , я наткнулся на страницу IBM для EBCDIC с ключевой информацией, напечатанной на странице (поскольку она имеет привычку исчезать):
Версия 11.0.0 Расширенный двоичный код десятичного кода обмена (EBCDIC)
схема кодирования, которая обычно используется в zSeries (z / OS) и
iSeries (System i®).
И самое полезное:
Некоторыми примерами CCSID EBCDIC являются 37, 500 и 1047.
Поскольку я уже узнал из самого этого вопроса , что Cp1047
- еще один хороший набор символов, который нужно попробовать (На этот раз символ £ превратился в акцентированное "Y"), я попытался Cp37
, чтобы увидеть такого набора символов не было, , но попытался Cp037
и получил правильную кодировку.
Похоже, ключ находит, какой Идентификатор набора кодов (CCSID) используется в вашей системе, и гарантирует, что ваш экземпляр jt400 - который в противном случае работает идеально - соответствует 100% кодированию установить на as400, в моем случае way до моей жизни и десятилетий бизнес-логики назад.