0

mysql データベースに接続されている php プロジェクトをコーディングしました。また、php URLが呼び出されたときに実行されるjarファイルもあります。PHPを介して、ユーザーからパラメーターを取得してデータベースに保存します。その後、jarファイルがデータベースに接続され、指定された行が読み取られます。ここまではすべて問題ありません。

これは、サーバーにある .jar ファイルを実行する私の php ファイルです。

    <?php
mysql_query("SET NAMES utf8");
header("Content-Type: text/html;charset=UTF-8");


echo shell_exec('java -jar /home/path/path/path/my.jar');

?>

そして私のjarファイルは次のとおりです:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/somedb?useUnicode=true&characterEncoding=UTF-8", "root", "pass");

while ループで:

while (resultSet2.next()) {


        title2 = new String(resultSet2.getString("title").getBytes("UTF-8"), "UTF-8");
        url2 = new String(resultSet2.getString("url").getBytes("UTF-8"), "UTF-8");
        id = new String(resultSet2.getString("id").getBytes("UTF-8"), "UTF-8");
        date = new String(resultSet2.getString("date").getBytes("UTF-8"), "UTF-8");

        list.add(title2);
        list2.add(url2);
        list4.add(id);
        list5.add(date);


    }

データベースから何かを取得すると、すべてが完全に機能します。また、dbを「デフォルトの文字セットutf8のデフォルトの照合utf8_general_ci」に設定しました。

PHPでトルコ語の文字を書くと、dbに保存され、それを見ることができます。しかし、jar でこれらのトルコ語の文字を取得しようとすると、疑問符しか表示されません。私はほとんどすべてを試しましたが、チャンスはありませんでした。

どんな助けでも大いに感謝します。

編集: jar ファイルで UTF-8 を ISO-8859-1 に変更しました。しかし、それは再び機能しません。

4

1 に答える 1

0

すべての接続設定が正しい場合

title2 = resultSet2.getString("title")

...十分なはずです。これにより、データベースから情報が取得され、接続設定を使用して文字列が解釈され、Java の内部表現である UTF-16 に変換されます。getBytes("UTF-8") を追加すると、内部文字列が UTF-8 に変換され、それらのバイトが返されます。次に、それらのバイトを UTF-8 として再解釈しています。

MySQL は root として接続するときに設定ファイルの接続オプションを無視することがわかっているので、新しいユーザーを作成して再度実行してみてください。

于 2012-09-29T09:43:23.440 に答える