国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysql5寫中文亂碼問題解決

2024-07-24 12:57:41
字體:
來源:轉載
供稿:網友

我插入MySQL5的中文一直是亂碼。
但是直接使用mysqlAdmin,EMS等工具插入DB就不是亂碼。而且我還可以使用程序正常地讀出來。

原因是:
DBDriverClass=com.mysql.jdbc.Driver
DBURL=jdbc:mysql://10.4.2.52:3306/srx?useUnicode=true&characterEncoding=utf-8
這樣的URL中useUnicode=true和characterEncoding=utf-8兩個屬性都不好用。

所以,數據庫服務器無法從URL中獲知Client使用了哪個編碼。于是就使用數據庫服務器上默認的latin也就是iso-8859-1編碼來解析用戶發送的sql語句。這樣,原本用戶是用操作系統的編碼,但是服務器硬給轉成ISO-8859-1,所以就亂碼了。

Client端只要配置好
useUnicode=true
characterEncoding=utf-8
這兩個屬性。只要指定了,就不會亂碼。utf-8可以,gb2312可以,gbk可以。指定了什么,Client就默認以這種
編碼轉換SQL語句,服務器也就知道怎么轉會去。


怎么看客戶端發送給服務器的SQL使用什么編碼呢?

在客戶端寫個程序,執行SQL語句:
public void select() throws SQLException {
        ResultSet rs = this.cnn.createStatement().executeQuery("SHOW VARIABLES LIKE 'character_set_%'");
        while(rs.next()){
            System.out.PRintln(rs.getString(1)+","+rs.getString(2));
        }
        rs.close();
    }
沒有配置characterEncoding=utf-8之前,我使用的是DBURL=jdbc:mysql://10.4.2.52:3306/srx?useUnicode=true&characterEncoding=utf-8 這樣的配置。結果用select()方法查詢結果如下:

character_set_client,latin1
character_set_connection,latin1
character_set_database,utf8
character_set_filesystem,binary
character_set_results,
character_set_server,latin1
character_set_system,utf8
character_sets_dir,/usr/local/mysql-standard-5.0.27-linux-i686/share/mysql/charsets/

注意第一行就可以了,可見使用的是latin1。

而latin1本身就無法表示漢字,經過這個編碼打包的SQL語句發給Server,Server也用Latin1解析也無法還原。

所以,我總是寫亂碼到DB。

而配置了配置characterEncoding=utf-8之后,
執行select(),結果:
character_set_client,utf8
character_set_connection,utf8
character_set_database,utf8
character_set_filesystem,binary
character_set_results,
character_set_server,latin1
character_set_system,utf8
character_sets_dir,/usr/local/mysql-standard-5.0.27-linux-i686/share/mysql/charsets/

第一行為utf-8,SQL將用UTF8打包給Server,Server也用Client配置的UTF8
解析。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岳西县| 梅河口市| 犍为县| 南郑县| 商洛市| 开封市| 霍山县| 灵璧县| 旺苍县| 翁源县| 台江县| 沛县| 大庆市| 泽州县| 绥化市| 西贡区| 芒康县| 阳朔县| 浮梁县| 永嘉县| 桂阳县| 平乡县| 阳谷县| 高阳县| 垦利县| 宜宾县| 曲水县| 林芝县| 宣汉县| 东平县| 微山县| 宿迁市| 宝山区| 清原| 英吉沙县| 沙河市| 长宁区| 张家港市| 新蔡县| 寿宁县| 临猗县|