2017-08-29 23 views
2

我遇到了一些麻煩追查爲什麼我MariaDB的窗戶安裝的發展不符合我的FreeBSD安裝。下面是我的測試分貝一些輸出FreeBSD上:MariaDB的字符集和Windows排序VS FreeBSD的

MariaDB [www]> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 
+--------------------------+--------------------+ 
| Variable_name   | Value    | 
+--------------------------+--------------------+ 
| character_set_client  | latin1    | 
| character_set_connection | latin1    | 
| character_set_database | utf8mb4   | 
| character_set_filesystem | binary    | 
| character_set_results | latin1    | 
| character_set_server  | latin1    | 
| character_set_system  | utf8    | 
| collation_connection  | latin1_swedish_ci | 
| collation_database  | utf8mb4_unicode_ci | 
| collation_server   | latin1_swedish_ci | 
+--------------------------+--------------------+ 
10 rows in set (0.00 sec) 

MariaDB [www]> SHOW FULL COLUMNS FROM items; 
+-------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+ 
| Field  | Type   | Collation   | Null | Key | Default | Extra   | Privileges      | Comment | 
+-------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+ 
| id   | int(11)  | NULL    | NO | PRI | NULL | auto_increment | select,insert,update,references |   | 
| description | varchar(255) | utf8mb4_unicode_ci | YES |  | NULL |    | select,insert,update,references |   | 
+-------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+ 
2 rows in set (0.01 sec) 

MariaDB [www]> select description from items where id=15; 
+------------------------+ 
| description   | 
+------------------------+ 
| 15 kΩ 1/8W 1% (smd) | 
+------------------------+ 
1 row in set (0.00 sec) 

下面是Windows上的等效:

MariaDB [www]> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 
+--------------------------+--------------------+ 
| Variable_name   | Value    | 
+--------------------------+--------------------+ 
| character_set_client  | latin1    | 
| character_set_connection | latin1    | 
| character_set_database | utf8mb4   | 
| character_set_filesystem | binary    | 
| character_set_results | latin1    | 
| character_set_server  | latin1    | 
| character_set_system  | utf8    | 
| collation_connection  | latin1_swedish_ci | 
| collation_database  | utf8mb4_unicode_ci | 
| collation_server   | latin1_swedish_ci | 
+--------------------------+--------------------+ 
10 rows in set (0.01 sec) 
MariaDB [www]> SHOW FULL COLUMNS FROM items; 
+-------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+ 
| Field  | Type   | Collation   | Null | Key | Default | Extra   | Privileges      | Comment | 
+-------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+ 
| id   | int(11)  | NULL    | NO | PRI | NULL | auto_increment | select,insert,update,references |   | 
| description | varchar(255) | utf8mb4_unicode_ci | YES |  | NULL |    | select,insert,update,references |   | 
+-------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+ 
2 rows in set (0.01 sec) 

MariaDB [www]> select description from items where id=15; 
+------------------------+ 
| description   | 
+------------------------+ 
| 15 kΩ 1/8W 1% (smd) | 
+------------------------+ 
1 row in set (0.00 sec) 

所以我的問題是,我失去了在設置的比較可能是源方面有什麼在Windows和什麼錯位字符(Ω)的它需要爲了得到屬於我的FreeBSD服務器上的相同的字符將被更改爲。 FreeBSD的安裝稍微新23年1月10日,MariaDB的FreeBSD的Ports VS 10.1.19,MariaDB的mariadb.org二進制分發。

+0

你使用的是同一個終端嗎,客戶端是否支持utf8? – nbari

回答

0

問題1:始終使用utf8(或utf8mb4)。 latin1沒有Ω。你很幸運在任一系統上都能看到它。請參閱Trouble with utf8 characters; what I see is not what I stored中的「最佳實踐」

問題2:在Windows上,cmd不一定默認爲支持UTF-8。命令「chcp」控制「代碼頁」。 chcp 65001提供UTF-8,但它需要安裝一個特殊的字符集,太。要在控制檯窗口中設置字體:右鍵單擊窗口標題→屬性→字體→選擇Lucida控制檯。

檢查:要查看數據是否被正確地存儲(改變整個utf8mb4後),SELECT HEX(...) ...來看看你得到CEA9爲歐米茄。如果你得到C38EC2A9,你有「雙重編碼」。以UTF-8編碼時,其他希臘字母將爲CExxCFxx