1

UTF-8 Unicode charset を使用する MySql db があります。私が持っているときの私のJSPで:

<meta http-equiv="Content-Type" content="text/html" charset="ISO-8859-1">

データベースにスペイン語のアクセントを正しく挿入します。ただし、使用する場合:

<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">

ガルシアの代わりにガルシアを挿入します

UTF-8でアクセントが挿入されない理由を知っていますか?

4

3 に答える 3

1

Springを使用しているので、CharacterEncodingFilterを使用して問題を解決しました。現在のブラウザは通常、HTMLページまたはフォームで指定されている場合でも文字エンコードを設定しないため、これは便利です。

于 2013-03-01T05:48:24.043 に答える
1

設定する項目は3つ

(1) ソースファイルで使用された文字エンコーディングをサーブレットエンジンに伝える

(2) 出力したい文字セットをサーブレットエンジンに伝える

(3) ストリームの文字エンコーディングを受信者に伝えます。

メタ タグはこれらの最後の処理のみを行いますが、実際にはそのエンコーディングでフォーマットされた出力ストリームを送信していない可能性があります。

これを使用して、サーブレット エンジンにソース ファイルの読み取り方法を指示します。ソース ファイルがエンコードされている実際の文字セットを入力する必要があります。UTF-8 エディターを使用した場合にのみ、UTF-8 になります。苦労して UTF-8 にしなかった場合は、おそらく ISO-8859-1 です。

<%@page contentType="text/html;charset=???????"%>

これを使用して、ストリームを出力する方法を伝えます。

response.setCharacterEncoding("text/html; charset=UTF-8")

あなたの場合、DB 内のデータが UTF-8 でエンコードされていることがわかっているため、問題を解決するのはおそらくこの最後の設定です。

于 2013-03-01T15:44:21.777 に答える
1

JSP についてはわかりませんが、これはデータベース接続がデータベースからデータを読み取る方法に関連していることがよくあります。PHP では、utf-8 エンコーディングでテーブル (またはデータベース) を読み取っていることを確認するには、接続の文字セットを宣言する必要があります。

if(!$conexion->set_charset("utf8")) {
$errsql['juego_de_caracteres']="Error al conectar al servidor mysql :    ".mysqli_connect_error();

したがって、Javaでも同様のことができると思います。Web で文字エンコーディングについて読むことができます。このリンク: http://www.joelonsoftware.com/articles/Unicode.html役に立ちました。
また、設定が正しくない場合、Windows の文字が ISO-8859-1 で正しく表示されるのを見たことがありますが、すべてのシステムで正しく表示されるとは限らないため、出力がどうなるかはかなり予測できません。

于 2013-03-01T04:31:28.420 に答える