我是数据库方面的新手,所以请耐心等待 ;)
我在 mysql 中设计了一个表来存储城市名称(和其他内容)。我从包含所有信息的 UTF8 txt 文件加载数据。
问题是城市名称是以原始形式书写的,所以我有来自中国、俄罗斯、英国、摩洛哥等地的字符集。当我将文件加载到数据库中时,有很多警告,因为那。我是这样做的:
LOAD DATA LOCAL INFILE '/home/ommadawn/cities.txt' INTO TABLE myDB.cities CHARACTER SET UTF8 FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (country, city, lat, lon);
我所有的字符集都设置为 utf8,排序规则也设置为 utf8。
问题出在哪里?
谢谢!
编辑:
警告是这样的:
Warning | 1366 | Incorrect string value: '\xCC\xA7uway...' for column 'city' at row 9
在这一行中,文本是:
AE Z̧uwayhir 23.28333 53.2
最佳答案
呃。在 UTF-8 中,CCA7
是一个“COMBINING CEDILLA”。所以,它注定要与相邻的字母组合成一个重音字母。此页面显示它与 u
结合;另一个实验(在相同 浏览器中)将它与 Z
结合:Z̧uwayhir。呃。
反正阿联酋好像也有这种地方。而 UTF-8(MySQL 的 utf8 或 utf8mb4)似乎是它的编码。
回到问题...可能表中的列未声明为CHARACTER SET utf8mb4
。
你知道它是否将文本截断为 Z
吗?
请提供 SHOW VARIABLES LIKE 'char%';
关于mysql - 数据库中的多种编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863857/