Проблема с кодировкой UTF-8 при передаче файлов по FTP
-
22-07-2019 - |
Вопрос
Я могу загружать файлы из своего приложения через FTP с помощью библиотеки Java FTPClient.
(происходит загрузка в хранилище Oracle XML DB.)
Все загружается нормально, если в xml-файле нет фигурных кавычек. В этом случае я получаю ошибку: LPX-00200: не удалось преобразовать кодировку UTF-8 в UCS2
Я могу загрузить то, что я считаю одним и тем же файлом, используя инструмент Windows CMD line FTP. Мне интересно, есть ли какой-нибудь параметр кодирования, который использует инструмент Windows CMD line, который, возможно, мне нужно установить в моем коде Java.
Кто-нибудь знает что-нибудь об этом? Спасибо !!
Решение 3
В двоичном коде эта проблема исчезает.
FTPClient.setType(FTPClient.TYPE_BINARY);
http://www.sauronsoftware.it/projects/ftp4j/manual .php # 3 р>
Другие советы
Я не знаю это приложение, но вы можете попробовать использовать -Dfile.encoding = UTF-8 в командной строке JVM
Не знакомы с репозиториями Oracle XML DB - могут ли они принимать сжатые загрузки? Архивирование или сжатие вашего файла позволит сэкономить ресурсы и нарушит автоматическое определение любого типа файлов ASCII.
Если ваш файл содержит фигурные кавычки, они находятся в диапазоне старших битов в наборах символов iso-8859-1 и windows-1252. В UTF-8 эти символы обычно занимают два байта в UTF-8.
Вполне возможно, что вы случайно закодировали файл xml в одну из этих кодировок вместо UTF-8. Это может привести к ошибке преобразования, поскольку устанавливаемый старший бит разрешен только в последовательностях из нескольких октетов UTF-8.
Если вы работаете в Windows, откройте файл в Блокноте и попробуйте повторно сохранить документ, используя «Сохранить как ...» с кодировкой UTF-8, и загрузите измененный файл. В Unix используйте iconv или аналогичный инструмент для преобразования из ISO-8859-1 в UTF-8 перед загрузкой.
Если документ XML явно помечает свою кодировку, убедитесь, что он помечен правильной кодировкой (например, UTF-8). Во многих xml-анализаторах вы можете анализировать закодированный XML-код iso-8859-1 или windows-1252, если он помечен как таковой.