色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql5.6中文問號

林玟書2年前10瀏覽0評論

MySQL 5.6中文問號(“????”)的問題已經困擾很多人了。這個問題出現在插入和查詢中,尤其是在處理中文字符時會出現。下面我們通過代碼來探究問題的原因和解決方法。

-- 創建數據庫
CREATE DATABASE testdb;
-- 創建表
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 插入數據,使用“?”替換中文字符
INSERT INTO users(name) VALUES ('張三'),('李四'),('王五'),('趙六'),('小明'),('小紅'),('小剛'),('小麗');
-- 查詢數據
SELECT * FROM users;

上面的代碼創建了一個名為testdb的數據庫,并在其中創建了一個名為users的表,其中包含一個id和一個name字段。我們可以看到,在INSERT INTO語句中,我們使用“?”來代替中文字符。當我們執行SELECT語句時,我們會看到結果中的中文字符被替換成了“????”。

這個問題的原因是MySQL默認是使用utf8編碼,它只支持3個字節的UTF-8字符,而4個字節的UTF-8字符是不支持的。而一些中文字符恰好是4個字節的,因此在MySQL中處理中文字符時就會出現問題。

解決方法是將MySQL的字符集設置為utf8mb4,該字符集支持4個字節的UTF-8字符。修改MySQL的配置文件my.cnf(在Linux中一般在/etc/mysql目錄下),將以下內容添加到[mysqld]部分:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

配置完畢后,我們需要重啟MySQL才能生效。重啟完畢后,我們可以再次執行上面的代碼,可以發現問題已經得到解決,我們能夠正確地看到中文字符了。