MySQL數據庫亂碼排錯

MySQL數據庫亂碼的緣由mysql

在計算機中任何數據都是以二進制存儲的,要存儲一個字符就要對它進行編碼,用一個二進制與其對應,這種對應的規則就是字符的編碼。編碼的規則有不少種,一種規則所編碼的「字符」的集合就叫作「字符集」。在制定編碼標準的時候,「字符的集合」和「編碼」通常都是同時制定的,所以,平時咱們所說的「字符集」,例如GB2312,GBK和UTF-8等,除了有「字符的集合」這層含義外,同時也包含了「編碼」的含義。sql

對中文處理能夠使用GB2312和GBK,它是中文字符集,而UTF-8是對世界上每一個國家和地區的文字之地制定的字符集,而且UTF-8是可變存儲長度的字符集,如英文字母只須要一個字節存儲,節省了存儲空間,因此數據庫中一般採用UTF-8的字符集。數據庫


服務器系統字符設置問題vim

數據表語系設置的問題服務器

客戶端鏈接語系的問題ide


解決方法編碼

在建立數據庫時經過CHARACTER SET 字符集與COLLATE 'utf8_general_ci' 設定spa

在建立表時經過DEFAULT CHARSET = 字符集 設定ci

可以使用SET NAMES 字符集設置默認的字符集it

修改配置文件,在[mysql]段中加入default_character_set=字符集


⑴在建立數據庫時設定字符集

CREATE DATABASE chartest CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';


⑵在建立表時設定字符集

CREATE TABLE 'charatertest' (id varhsar(40)) DEFAULT CHARSET =utf8


⑶使用SET NAMES 是指默認的字符集

SET NAMES utf8


⑷修改配置文件,在[mysql]段中加入

default_character_set=utf8


舉例:

⑴建立數據庫、表、全局數據庫設置

[root@localhost ~]# mysql -u root -p123

mysql> create database mydb default character set utf8 collate utf8_general_ci;

mysql> use mydb

mysql> create table mydb_table (username varchar(64) NOT NULL  ) default charset=utf8;

mysql> set names utf8;#給整個數據庫設置默認字符集

⑵修改配置文件

[root@localhost ~]# vim /etc/my.cnf

[mysql]後面加入

default_character_set=utf8

相關文章
相關標籤/搜索