[英]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.