ファイルをFTP転送する際のUTF-8エンコードの問題
-
22-07-2019 - |
質問
FTPClient Javaライブラリを使用して、アプリケーションにFTP経由でファイルをアップロードさせることができます。
(たまたまOracle XML DBリポジトリにアップロードしています。)
xmlファイルに中括弧が含まれていない限り、すべてが正常にアップロードされます。その場合、エラーが発生します: LPX-00200:UTF-8エンコーディングからUCS2に変換できませんでした
Windows CMDラインFTPツールを使用して、同じファイルと思われるものをアップロードできます。 Windows CMDラインツールが使用するエンコード設定がJavaコードで設定する必要があるかどうか疑問に思っています。
これについて知っている人はいますか?ありがとう!!
解決 3
バイナリでは、この問題はなくなります。
FTPClient.setType(FTPClient.TYPE_BINARY);
他のヒント
そのアプリケーションはわかりませんが、JVMコマンドラインで-Dfile.encoding = UTF-8を使用しようとする可能性があります
Oracle XML DBリポジトリに精通していない-圧縮されたアップロードを受け入れることができますか?ファイルを圧縮またはgzip圧縮すると、リソースが節約され、使用中のASCIIファイルタイプの自動検出が妨げられます。
ファイルに中括弧が含まれている場合、それらはiso-8859-1およびwindows-1252文字セットの高位ビットセット範囲にあります。 UTF-8では、これらの文字は通常UTF-8で2バイトを使用します。
UTF-8の代わりにこれらのエンコーディングの1つでxmlファイルを誤ってエンコードした可能性は十分にあります。設定される上位ビットは複数のUTF-8オクテットのシーケンスでのみ許可されるため、変換エラーが発生します。
Windowsの場合は、メモ帳でファイルを開き、UTF-8エンコーディングで[名前を付けて保存...]を使用してドキュメントを再保存し、変更したファイルをアップロードします。Unixでは、iconvなどを使用しますアップロードする前にiso-8859-1からUTF-8に変換するツール。
XMLドキュメントが明示的にエンコードをマークしている場合、正しいエンコード(UTF-8など)でマークされていることを確認してください。多くのxmlパーサーでは、iso-8859-1またはwindows-1252文字セットでエンコードされたXMLを、そのようにマークされている限り解析できます。