不使用mysql的中文和日文字符

时间:2014-07-07 16:15:55

标签: mysql sql utf-8 character-encoding

我有一个名为CHINESE的表格,其中只有一列NAME SHOW VARIABLES LIKE 'char%'的输出为:

+--------------------------+--------------------------------------------------------+
| Variable_name            | Value                                                  |
+--------------------------+--------------------------------------------------------+
| character_set_client     | utf8                                                   |
| character_set_connection | utf8                                                   |
| character_set_database   | latin1                                                 |
| character_set_filesystem | binary                                                 |
| character_set_results    | utf8                                                   |
| character_set_server     | latin1                                                 |
| character_set_system     | utf8                                                   |
| character_sets_dir       | /usr/local/mysql-5.1.73-osx10.6-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+

当我运行此查询:INSERT INTO CHINESE VALUES ('你好')时,会插入值。
但是,当我尝试执行此查询时:SELECT * FROM CHINESE,结果是:

+------+
| NAME |
+------+
| ??   |
+------+

SELECT HEX(NAME) FROM CHINESE的结果是:

+-----------+
| HEX(NAME) |
+-----------+
| 3F3F      |
+-----------+

我在哪里弄错了?

2 个答案:

答案 0 :(得分:0)

如果mysql> = 5.5.3,请使用utf8mb4。

  1. 更改来源表
ALTER TABLE $tablename
  CONVERT TO CHARACTER SET utf8mb4 
  COLLATE utf8mb4_general_ci
  1. 创建新表
CREATE TABLE $tablename (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  1. 修改列
ALTER TABLE $tablename
    MODIFY $col1
    VARCHAR(191)
    CHARACTER SET utf8mb4;

引用:Mysql DOC: Column Character Set Conversion

答案 1 :(得分:-1)

请尝试以下操作来更改字符集:SET NAMES 'big5';