簡體   English   中英

PHP從MySQL UTF-8編碼到Java

[英]php to java from mysql utf-8 encoding

我已經編碼了一個連接mysql數據庫的php項目。 我也有一個jar文件,該文件在調用php url時運行。 通過php,我從用戶那里獲取參數並將其保存到數據庫中,然后我的jar文件連接到數據庫並讀取指定的行。 直到這里一切都還好。

這是我的php文件,運行位於服務器中的.jar文件:

    <?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。 但這不再起作用。

如果所有連接設置均正確,則

title2 = resultSet2.getString("title")

...就足夠了。 這將從數據庫中檢索信息,並使用連接設置解釋字符串,然后將其轉換為Java內部表示的UTF-16。 當您添加getBytes(“ UTF-8”)時,它將內部字符串轉換為UTF-8,然后返回這些字節。 然后,您將這些字節重新解釋為UTF-8。

我知道MySQL以root身份連接時會忽略配置文件中的連接選項,因此請嘗試創建一個新用戶並再次運行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM