我有一个 MySQL 数据库。我创建了一个具有以下定义的表,它支持多种语言(印地语、泰语等)。
CREATE TABLE test_multi_lang
(
language_name varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci
)
INSERT INTO test_multi_lang
(language_name )
VALUES
('ตัวอย่าง')
INSERT INTO test_multi_lang
(language_name )
VALUES
('नमूना')
但是当我选择数据的时候。它将所有数据显示为 ??????
。
SELECT * FROM test_multi_lang
示例图片
我该如何解决这个问题?
提前致谢。
这不是 MySQL 的错:数据没有在您的客户端程序中正确输出。这是它在我的 Linux Slackware 机器上的样子。原生 MySQL 控制台:
mysql> CREATE TABLE test_multi_lang
(
language_name varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci
);
Query OK, 0 rows affected (0.35 sec)
mysql> insert into test_multi_lang
(language_name )
values
('ตัวอย่าง');
mysql> SELECT * FROM test_multi_lang;
+--------------------------+
| language_name |
+--------------------------+
| ตัวอย่าง |
+--------------------------+
mysql> SET NAMES latin1;
mysql> SELECT * FROM test_multi_lang;
+---------------+
| language_name |
+---------------+
| ???????? |
+---------------+
mysql> SET NAMES utf8;
mysql> SELECT * FROM test_multi_lang;
+--------------------------+
| language_name |
+--------------------------+
| ตัวอย่าง |
+--------------------------+
你看:我们一使用SET NAMES latin1
,我们就得到了问号。尝试使用控制台应用程序连接到 MySQL,并使用 SET NAMES utf8
。
作为manual说:
SET NAMES indicates what character set the client will use to send SQL
statements to the server... It also specifies the character set that the server should
use for sending results back to the client.