Flash Player HttpService (Spark フォームからのデータ) によって送信され、Java サーブレットで受信されたパラメーターのデコードに問題があります。これは HttpService と Form のクライアント コードです。
<mx:HTTPService id="submitForm" result="onResultSend(event)" method="POST" url="{EVMServerConnection.SERVER_ADDRESS}/UserSubmitionServlet" useProxy="false" resultFormat="text">
<mx:request xmlns="">
<login>{login.text}</login>
<password>{password.text}</password>
<email>{email.text}</email>
<userName>{userName.text}</userName>
<secondName>{secondName.text}</secondName>
<gender>{String(gender.selectedItem)}</gender>
<countryKey>{String(country.selectedItem)}</countryKey>
<city>{city.text}</city>
<dateOfBirth>{String(dayOfBirth.selectedItem) + String(monthOfBirth.selectedItem) + String(yearOfBirth.selectedItem)}</dateOfBirth>
</mx:request>
</mx:HTTPService>
サーブレット メソッド:
private void registerUser(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
//request.setCharacterEncoding("UTF-16LE");
System.out.println(request.getCharacterEncoding());
String login = request.getParameter("login");
String password = request.getParameter("password");
String email = request.getParameter("email");
//String userName = DataUtils.getUTF8FromUTF16String( request.getParameter("userName") );
//String userName = request.getParameter("userName");
byte[] bytes = request.getParameter("userName").getBytes();
String userName = new String(bytes , "Unicode" );
System.out.println("UserName: " + userName);
String secondName = request.getParameter("secondName");
String gender = request.getParameter("gender");
boolean isMale = false;
if (gender != null)
isMale = !gender.equals("1");
//String countryKey = request.getParameter("countryKey");
String city = request.getParameter("city");
String dateOfBirth = request.getParameter("dateOfBirth");
Date dateDateOfBirth = null;
コンソールに userName を表示しようとすると、中国語の記号が表示されますが、ポーランド文字のはずです。new String() で Unicode パラメータの代わりに UTF-16、UTF-16LE、UTF-16BE を使用しようとしましたが、結果は同様でした。