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

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

MySQL latin1字符集中文亂碼解決方案

2024-07-24 12:37:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

出面mysql中文亂碼最多的就是數(shù)據(jù)庫(kù)編碼的問(wèn)題了,如果我們數(shù)據(jù)庫(kù)編碼是latin1字符集,但我們直接保存gbk就有可能出現(xiàn)中文亂碼了,下面我總結(jié)了一些解決辦法.

先看我的實(shí)例,字符集出現(xiàn)錯(cuò)誤解決辦法,出現(xiàn)的問(wèn)題:

  1. mysql> update users  
  2. -> set username='關(guān)羽'  
  3. -> where userid=2;  
  4. ERROR 1366 (HY000): Incorrect string value: 'xB9xD8xD3xF0' for column 'usern  
  5. ame' at row 1 

向表中插入中文字符時(shí),出現(xiàn)錯(cuò)誤,代碼如下:

  1. mysql> select * from users;  
  2. +--------+----------+  
  3. | userid | username |  
  4. +--------+----------+  
  5. | 2 | ???? |  
  6. | 3 | ???? |  
  7. | 4 | ?í?ù |  
  8. +--------+----------+  
  9. rows in set (0.00 sec) 

對(duì)數(shù)據(jù)庫(kù)操作:以下是查看字符集和排序方式的命令,用phpmyadmin可以直接用sql方式運(yùn)行myql>之后的命令:

  1. mysql> SHOW VARIABLES LIKE 'character_set_%'
  2. +————————–+—————————-+ 
  3. | Variable_name | Value | 
  4. +————————–+—————————-+ 
  5. | character_set_client | latin1 | 
  6. | character_set_connection | latin1 | 
  7. | character_set_database | latin1 | 
  8. | character_set_results | latin1 | 
  9. | character_set_server | latin1 | 
  10. | character_set_system | latin1 | 
  11. | character_sets_dir | /usr/share/mysql/charsets/ | 
  12. +————————–+—————————-+ 
  13. rows in set (0.00 sec) 
  14. mysql> SHOW VARIABLES LIKE 'collation_%';  
  15. +———————-+——————-+ 
  16. | Variable_name | Value |  --Vevb.com 
  17. +———————-+——————-+ 
  18. | collation_connection | latin1_swedish_ci | 
  19. | collation_database | latin1_swedish_ci | 
  20. | collation_server | latin1_swedish_ci | 
  21. +———————-+——————-+ 
  22. rows in set (0.00 sec) 

使用php讀出數(shù)據(jù),需要加入:mysql_query("SET NAMES 'LATIN1'")

此時(shí)會(huì)發(fā)現(xiàn)latin1輸出的中文亂碼在頁(yè)面顯示已經(jīng)可以正常,頁(yè)面的編碼是gbk,這時(shí)正常就說(shuō)明讀取出來(lái)的中文字是gbk編碼的了,再插入utf8存儲(chǔ)的數(shù)據(jù)庫(kù)時(shí)因?yàn)閿?shù)據(jù)格式不正常,無(wú)法正常插入,此時(shí)就需要用php來(lái)進(jìn)行數(shù)據(jù)的轉(zhuǎn)碼.

iconv('gbk','utf-8',XXXXX);

這里要注意,如果要導(dǎo)入到utf8字符集的DB中是設(shè)定的原先插入到latin1 db中的原始編碼格式,本文中的測(cè)試后確定為gbk編碼,轉(zhuǎn)為utf8,因此用網(wǎng)頁(yè)的編碼方式不斷調(diào)試輸出,直到頁(yè)面呈現(xiàn)正常的中文字符為止,這種方法可以逆向推出插入db時(shí)的中文字符編碼格式.

MySQL 5.5的修改字符集編碼為UTF8,徹底解決中文亂碼問(wèn)題.

最簡(jiǎn)單的完美修改方法,修改mysql的my.cnf文件中的字符集鍵值,注意配置的字段細(xì)節(jié):

1、在[client]字段里加入default-character-set=utf8,如下:

  1. [client] 
  2. port = 3306 
  3. socket = /var/lib/mysql/mysql.sock 
  4. default-character-set=utf8 

2、在[mysqld]字段里加入character-set-server=utf8,如下:

  1. [mysqld] 
  2. port = 3306 
  3. socket = /var/lib/mysql/mysql.sock 
  4. character-set-server=utf8 

3、在[mysql]字段里加入default-character-set=utf8,如下:

  1. [mysql] 
  2. no-auto-rehash 
  3. default-character-set=utf8 

修改完成后,service mysql restart重啟mysql服務(wù)就生效,注意:[mysqld]字段與[mysql]字段是有區(qū)別的.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汤原县| 巨鹿县| 松阳县| 宁海县| 双峰县| 宽甸| 浮梁县| 宁强县| 大余县| 潜江市| 马公市| 内丘县| 天门市| 株洲县| 宜阳县| 眉山市| 工布江达县| 黎城县| 开化县| 综艺| 常宁市| 阿拉善左旗| 扬州市| 长顺县| 保定市| 安远县| 盐津县| 铁岭市| 乐业县| 巨野县| 南乐县| 安泽县| 内丘县| 始兴县| 定安县| 天镇县| 辉县市| 通化县| 南汇区| 宣城市| 沐川县|