1

DB にポンド記号 (£ または ₤ ) などの特殊記号を挿入しようとしているときに問題に直面しています。これらは ?? として表示されています。フロントエンドで

アプリサーバーとしてTomcatを使用し、その中に以下の構成があります

URIEncoding="UTF-8"

テキストをDBに挿入する前に、以下のチェックを実行しています

String Text = new String(request.getParameter("Text").getBytes("8859_1"),"UTF-8");

上記のコードが何をするかについてはよくわかりません

しかし、"URIEncoding="UTF-8" Tomcat server.xml から削除すると、これらの文字は正常に読み込まれます

http://confluence.atlassian.com/display/DOC/Configuring+Tomcat%27s+URI+encodingによると、 Tomcat はデフォルトで"ISO-8859-1"エンコーディングを使用します

誰でもこれについて助けてもらえますか?

前もって感謝します

4

1 に答える 1

3

Tomcat に UTF-8 としてフォーマットされた値を提供するように依頼し、それを ISO-8859-1 文字セット コード ポイントに基づいてバイト配列に変換します。次に、これらの値を UTF-8 コード ポイントに直接キャストしているため、文字化けが発生します。

変換を削除し、構成にURIEncoding="UTF-8"エントリを残すだけで、正常に動作するはずです。

また、出力エンコーディングが重要であることにも注意してください。UTF-8 でエンコードされたページを送り返しているが、ページのメタ タグまたはContent-EncodingHTTP 応答ヘッダーでエンコーディングが異なって設定されている場合、特定の文字について文字化けした結果が得られます。

于 2012-05-17T15:11:11.260 に答える