2012-03-29 3 views
-1

Я использую java-библиотеку (edtftpj) для FTP-файла из веб-приложения, размещенного на сервере tomcat, в систему MVS.& становится & во время FTP к MVS

Режим передачи по FTP - ASCII, и передача осуществляется с использованием потоков FTP. Данные из строковой переменной хранятся в наборе данных MVS.

Проблема заключается в том, что символы амперсандов преобразуются в &. Я пробовал различные escape-символы, включая \ &,^& и X'50 '(шестнадцатеричное значение), но ни один из них не помог.

Кто-нибудь знает, как избежать амперсандов, пожалуйста?

+0

Как вы хранящие данные в наборе данных? Вы уверены, что файл имеет буквальные амперсанды в нем, прежде чем переносить его? Это невероятно маловероятно, что FTP виноват. – geoffspear

+0

У меня есть строка типа «Великобритания и США». Это FTP ed для набора данных, такого как XYZ.ID188.D0329. Этот набор данных будет вновь создан. Я не уверен, что FTP тоже виноват, но опять же я не уверен, где проблема. – redDevil

+0

Является ли эта строка внутри документа XML случайным? –

ответ

2

Ничто в протоколе FTP не вызвало бы этого поведения в кодировке.

Представление & как & является представлением XML based escaping. Другие системы могут использовать одну и ту же схему, но в качестве стандарта это стандартная кодировка XML.

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

Если что-либо в системе MVS использует Java, это, вероятно, происходит через SOAP с другим коннектором, что подразумевает XML, что может привести к тому, что escape-последовательность будет происходить.

В любом случае, сам протокол FTP не является частью проблемы, ASCII transfer should only encode things like line endings, & уже является допустимым символом ASCII и не будет затронут. Именно система MVS делает это, если что-то происходит.

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

+0

К сожалению, использование FTP в режиме ASCII в/из MVS (z/OS) всегда будет выполнять преобразования кодовой страницы. Пожалуйста, мой ответ для получения дополнительной информации ... – IODEV

+0

у вас нет ответа, вы отправили то же самое, что и комментарий к вопросу. В любом случае, мой ответ по-прежнему остается точным, ничего о самом FTP не вызовет этого. Если вы правы, то система MVS выполняет кодировку. –

+0

Извините, Джаррод, имел некоторые проблемы при отправке ответа. Извлеченные уроки: всегда создавайте ответ, прежде чем делать дальнейшие комментарии ;-) – IODEV

-1

Использование FTP в режиме ASCII в/из MVS (z/OS) всегда будет выполнять преобразования кодовой страницы (например, ASCII < -> EBCDIC) для подключения к данным. Таким образом, очень важно настроить соединение с соответствующими параметрами в зависимости от типа набора данных и кодов страниц. Пример:

site SBD=(IBM-037,ISO8859-1) 
site TRAck 
site RECfm=FB 
site LRECL=80 
site PRImary=5 
site SECondary=5 
site BLKsize=6233 
site Directory=50 

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


Ссылка ссылки:

1. Preset commands to tackle codepage problem.
2. Coverting ASCII to EBCDIC via FTP on MVS Host.
3. Transferring Files to and from MVS.
4. FTP code page conversion.
5. FTP File Transfer Protocol and Z/OS (pdf).

Смежные вопросы