3
String departmentName = request.getParameter("dept_name");
departmentName = new String(departmentName.getBytes(Charset.forName("UTF8")),"UTF8");
System.out.println(departmentName);//O/p:  composés

Windowsでは、表示された出力は私が期待したものであり、部門名の一致基準に関するレコードも取得しています。

しかし、Linux では "compos??s" が返されるため、DB クエリは失敗します。

誰でも解決策を教えてもらえますか?

4

3 に答える 3

2

Charset が存在しないためかもしれUTF8ません。を使用する必要がありますUTF-8javadocを参照してください。

于 2013-03-08T07:03:39.737 に答える
0

まず第一に、System.out.printlnコンソールのエンコーディングを扱っているため、 で Unicode 出力を使用することは良い指標ではありません。エンコーディングを明示的に UTF-8 に設定してファイルを開くとOutputStreamWriter、リクエスト パラメータが正しくエンコードされているかどうかを確認できます。

次に、データベース接続のエンコーディングの問題がある可能性があります。MySQL の場合、接続文字列でエンコーディングを明示的に指定する必要があります。他の場合と同様に、指定されていない場合はデフォルトのシステム エンコーディングが使用されることもあります。

于 2013-03-08T08:12:19.977 に答える
0

まず、特定の場所ごとにエンコーディングを把握してみてください。

たとえば、Linux システムが UTF-8 文字セットで実行されている場合、文字列には既に適切なエンコーディングが設定されている可能性があります。そのハックはおそらく Windows でのみ必要でした。

大事なことを言い忘れましたが、それが間違っていることをどのように知っていますか? そして、間違っているのはあなたの視聴者ではありませんか? コンソールまたはログ ビューアーで使用する文字セットは?

エンコーディングがアプリケーションのその時点で期待されているものと正確に異なる場所を見つけるために、いくつかのチェックを実行する必要があります。

于 2013-03-08T08:56:39.023 に答える