ウムラウトを含むことができる JSP ページのテキスト入力フィールドから入力を取得しています。(例: Ä,Ö,Ü,ä,ö,ü,ß)。
入力の処理は、非ウムラウトに対して正常に機能します。しかし、ウムラウトが入力フィールドに入力されるたびに、間違った値が渡されます。
例えば:
- 入力欄に「ä」(UTF-8:U+00E4)が入力された場合、
- 引数から抽出される文字列は"ä" (UTF-8: U+00C3 および U+00A4) です。
UTF-8 16 進エンコーディング ("ä" の場合は c3 a4) が変換に使用されるように思えます。
正しい値を取得するにはどうすればよいですか?
現在の実装のスニペットを次に示します。
JSP ページは、入力値「pk」を処理ロジックに渡します。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
<input type="text" name="<%=pk.toString()%>" value="<%=value%>" size="70"/>
<button type="submit" title="Edit" value='Save' onclick="action.value='doSave';pk.value='<%=pk.toString()%>'"><img src="icons/run.png"/>Save</button>
値は args から取得され、文字列に変換されます。
UUID pk = UUID.fromString(args.get("pk")); //$NON-NLS-1$
String value = args.get(pk.toString());
注: データベースに保存されているウムラウトは、ページに正しく表示されます。