0

FileReference.upload()を使用してJavaサーブレットにPOSTしようとしているFlex 4.0プロジェクトにあります。 POSTにアルバム名などの追加パラメータを送信しています。これは、文字がLatin1文字セットにあるときに問題なく動作します。日本語の文字やUnicode文字を投稿しようとすると、Java側では通らない。FileReference.uploadは、Unicodeパラメータを追加してマルチパートフォームを正しくポストできません。

FileReference.upload()は、コンテンツタイプの設定を無視し、デフォルトでmultipart/form-dataのContent-Typeを使用します。この場合、デフォルトのエンコーディングが何であるか分かりません。 UTF-8ではないようです。

Java側では、httpServletRequest.getCharacterEncoding()にnullが表示されます。このメソッドはPOSTですが、データのエンコード方法を確認することはできません。

だから問題は、ユーザーがアップロードするファイルを選択しているため、FileReference.upload()を使用していると思われることです。私はUnicodeを送信する必要がありますが、Flashで正しくエンコードすることはできません。 URLLoaderを使用することが助けになるかどうか、またはFileReferenceからURLLoaderにデータを取得して(進捗イベントを失うことさえできる)かどうかはわかりません。

答えて

0

答えはJava側であり、Flex側ではありませんでした。 Tomcatのserver.xmlにURIEncoding = "UTF-8"をポート8080と8443用のコネクタに追加する必要がありました。これがユニコード値を渡すために必要だったものです。それから、私のデータソース(SQL Server)がsendStringParametersAsUnicode = trueを使うように設定されていることを確認しなければなりませんでした。これで、FlexアプリケーションからJavaアプリケーションにユニコードを投稿し、データベースに保存することができました。

1

server.xmlを処理する必要はありません。サーブレットでリクエスト文字セットをUTF-8に設定するだけです。

request.setCharacterEncoding("UTF-8"); 
関連する問題