我有一个 latin1 格式的数据库,所有存储的 utf8 字符都显示为 ????
+------+---------+-------+---------+--------------------+----------+-------------------- -----+---------------------+---------------------+---------+
| id | user_id | fname | lname | designation | location | email | created_at | updated_at | country |
+------+---------+-------+---------+--------------------+----------+------------------------- +---------------------+---------------------+---------+
| 6035 | 6035 | ????? | ??????? | ???????? ????????? | | ccc@rddd.net | 2011-04-11 06:05:54 | 2011-04-10 06:13:04 | xxxxxxxxx |
+------+---------+-------+---------+--------------------+----------+-------------------------+---------------------+---------------------+---------+
现在我使用这个命令并将数据库和表的格式更改为utf8
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8;
ALTER DATABASE <database_name> CHARACTER SET utf8;
我读过 latin1 对每个字符使用 1 个字节,但 utf8 对每个字符使用 3 个字节。我的问题是,如果我将我的表(已经包含大量数据)从 latin1 更改为 utf8,那么旧的字符数据将消耗 3 字节或 1 字节。如果我使用更改并转换数据,我会对旧数据有问题吗?我确信新数据将采用 utf8 格式。