mysql中文亂碼解決方法


latin1(1和l的區別,l要么沒有缺缺,要么缺缺是向左的直的; 1向左的缺缺是彎曲的,應該是可以看得出來的)是8位的字符集,表示英文和西歐字母.

瑞士: Switzerland [swits2land], 瑞士人(的): Swiss.
Swedish: 瑞典的.

collate: collation: 整理,校對; 排序規則

MySQL默認的校對規則是 :latin_swedish_ci, 為什么是瑞典的呢? 因為他的創始人 Monty 就是瑞典的。

mysql中查詢等sql語句中的 通配符是 %. 在查詢語句中可以使用 like 'latin1%'

mysql中show...的內容很多, 可以查看很多內容:
show character set;
show collation like 'latin1%';

character: 字符集, collation: 整理規則, 字符集中字符的"比較規則","排序規則"

latin類字符集,相當於latin語系,包括四種latin1, latin2, 5, 7四種字符集, 相當於東方語系包括中文, 日文, 韓文等字符集

字符集並不完全等同於整理規則, 仔細想想差別還是挺明顯的. 而且同一個字符集可能有多個排序規則,如latin1 -> latin1_swedish_ci, latin_spanish_ci,...
因為一般很少指定collation,所以要指定一個 default collation.

ci: case insensitive 大小寫不敏感
cs: case sensitive 大小寫敏感

從 整理規則 可以知道 排序和比較的情況: 如utf8_general_ci: 表示字符集是utf8, 比較規則是general, ci是大小寫不敏感,所以注冊用戶名和郵件地址時要使用, 如

A和a, mysql認為是相同的. 而utf8_bin: 表示字符集是utf8, 而比較排序時,按二進制存儲和排序比較,則a和A是不同的. 也可以知道, 並不是所有的"整理"規則 都要

使用 ci.

show create table tablename; mysql顯示 "數據表" 的 默認的字符集是latin1(注意不是utf8): ...default charset=latin1
show full columns from tablename; 可以查看各個字段的 整理規則;

最完整的現實字符集的命令是: status; 可以顯示 默認的 windows平台下的 "服務器的字符集: latin1, db 字符集: latin1, connect字符集: gbk, client字符

集:gbk. "

也就是說, 從服務器,到數據庫, 到表 都可以指定 "字符集", 而字段卻不能指定字符集, 只能指定 "整理規則", (這個整理規則中就 可以認為 包含了 字段的字符集,

以及比較/排序 規則). 即使前3個層次的字符集默認的 都是 latin1, 但是 如果 字段的 "整理"為 gbk_chinese_ci的話, 也能正常顯示中文.

mysql的版本是5.5.8-log, 其中的log表示開啟了binlog功能, 有日志記錄和日志管理功能.
5.0以后的mysql版本,采用bin二進制的日志格式. show master logs; 命令可以查看當前有哪些日志文件; set sql_log_bin=0/1; 用來關閉/打開日志功能;

mysqlbinlog 日志文件...; 顯示查看日志.
日志文件: mysql-bin.index是日志文件 的清單; mysql-bin.000001, 是二進制文件,要用mydqlbinlog命令專門查看...

保證幾個方面:

  1. mysql的server db table 的字符集應該一致,且與中文兼容(能顯示中文,如gbk,gb2312,utf8, big5等等);
  2. 連接字符集同1, 包括: character_set_client = character_set_connection = charater_set_results = 兼容中文字符集之一; 可以用一個命令來解決:  set names 'gbk/utf8/gb2312等', ===== set charset-names ...
  3. 表中的字段的 collation要設為 兼容中文之一, 且與1,2 相同.
    當修改了 mysql服務器的1,2,后, 要重啟mysqld 服務!!

如果這個還不行, 就考慮 編輯器的 編碼字符集也同上1.

具體到上面的操作就是:

  1. insert命令后面要加上 into 關鍵字才行;

  2. 要設置服務器和數據庫的字符集的命令是: set character_set_server='utf8' , 注意utf和8之間沒有橫線;set character_set_database='utf8'等等, 其他類似的變量都是同樣的設置。 但是這個設置好像只能生效一次, 要長期生效?????????????、

  3. 創建時,要設置表的字符集, 命令是 default charset=utf8 , 這里注意是charset, 是character set兩個單詞的縮寫, 不是兩個 單詞分開寫的!

  4. mysql中 查看字符集和collation的命令是:
    show charater set; show collation, 但是你要注意, 這個是系統提供的、在系統中有的, 可以設置的字符集和校驗, 但並不是當前server-db-table設置的字符集。
    要查看當前機器上的數據庫字符集, 要使用 show variables;
    但是, show variables查看的是所有的 當前數據庫系統正在運行的 變量包括字符集的設置, 所以,要查看其中某一些某一類的變量, 用like 來過濾, 如show variables like 'char%'...

  5. mysql的主配置命令, 是 etc下的 my.cnf, 注意是cnf, 不是config, 輔助配置文件目錄是: /etc/my.cnf.d, 而他的數據等實體放在: /var/share/mysql中, 里面有很多的內容和東西...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM