JDBC查詢條件中包含中文,無查詢結果(編碼問題)

mysql:
Variable_name Value
character_set_client gbk
character_set_connection gbk
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8

jdbc指定編碼:gb2312html

問題描述:
查詢條件:where name='關稅'
client 查詢結果:正常顯示
jdbc 查詢結果:無顯示mysql

已解決:
jdbc和client的角色都是客戶端,'關稅'分別做爲gbk ,gb2312進行了查詢。jdbc指定了utf8。
jdbc在鏈接時,指定編碼應該和client保持一致。sql

實踐得出的結論:
my.ini文件須要進行如下配置
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
client和server都會讀取這個文件,[client]如下的參數是由客戶端讀取,不用重啓服務,從新打開客戶端便會生效
[mysqld]如下的參數由服務端讀取,重啓服務後生效。
以上配置用來設置character_set_client character_set_connection character_set_server都爲utf8.數據庫

如下援引其餘博文:瀏覽器

2.mysql數據庫的編碼,原則上默認的編碼是mysql安裝的默認編碼,也能夠在建庫時用語句來執行:create databasedbname default character set utf8;
    3.mysql數據表的編碼,原則上默認是第二步創建的數據庫的編碼。提倡不要在creat table時加上編碼
    4.利用程序創建mysql鏈接時,鏈接字符串使用的編碼。如jdbc,這個地方必須是與你頁面的編碼一致。
    5.WEB程序頁面的編碼,charset=utf8;與4必須一致。
  除上面5個地方外,另有一個不是編碼者所能控制的,那就是瀏覽用戶的瀏覽器的編碼,通常是自動選擇,就不列入了。

上述五個地方,我所知道的保證不出現亂碼的方法是:oracle

2,3比較重要,我所理解的必須是一致。建議是在建庫語句時帶上編碼,建表時就不指定編碼了。
4是必須的
5在WEB頁面中必須設置成上面的統一的編碼。

請不要結束,繼續往下看:上述方法中必須統一是統一的編碼,我使用的是utf8,爲何使用utf8是我正要說的。
備註說明app

一、統一使用GBK編碼的話,大多數時候是不會出問題。可是若是遇到·這種字符,這個字段後的全部漢字都回出現亂碼。這在oracle中一樣存在。由於mysql,oracle的默認編碼彷佛都是(mysql-latin1亦是)iso-8559-1,對某些特殊字符會出現亂碼。所以建議使用utf8。utf8有利於建設網站的其它版本,好比英文版...,並且設置彷佛也沒有絲毫麻煩。。

參見:http://blog.csdn.net/twosecon...網站

未解決的:
1.關於mysql字符集的問題,以及character_set_client character_set_connection character_set_server character_set_system,還要研究:
http://dev.mysql.com/doc/refm...
http://dev.mysql.com/doc/refm...
http://www.th7.cn/db/mysql/20...
還有印象筆記編碼

2.瞭解字符集
這裏jdbc指定了utf8,而client是gbk,也是對的。.net

相關文章
相關標籤/搜索