0

我编写了一个连接 mysql 数据库的 php 项目。我还有一个 jar 文件,它在调用 php url 时运行。通过 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 中检索某些东西时,一切都很完美。我还将 db 设置为“默认字符集 utf8 默认整理 utf8_general_ci”。

当我用 php 写一个土耳其字符时,它会保存到 db,我可以看到。但是当我尝试用我的罐子检索那些土耳其字符时,它只显示问号。我几乎尝试了一切,但没有机会。

非常感谢任何帮助。

编辑:我还在 jar 文件中将 UTF-8 更改为 ISO-8859-1。但它不再起作用了。

4

1 回答 1

0

如果所有连接设置都正确,那么

title2 = resultSet2.getString("title")

……应该够了。这将从数据库中检索信息并使用连接设置解释字符串,然后将其转换为 UTF-16,这是 Java 的内部表示。当您添加 getBytes("UTF-8") 时,会将内部字符串转换为 UTF-8,然后返回这些字节。然后,您将这些字节重新解释为 UTF-8。

我知道 MySQL 在以 root 身份连接时会忽略配置文件中的连接选项,因此请尝试创建一个新用户并再次运行它。

于 2012-09-29T09:43:23.440 回答