我创建了一个数据库,存储中欧国家信息。我真的很难让角色集适合这些国家,因为他们有这么多特殊的角色。我知道“iso-8859-2 latin 2”字符集用于中欧国家,但当我尝试更改数据库和表字符集设置(通过phpmyadmin)时,似乎并没有完全删除“乱码字符”。我一直在尝试按照此链接的指南来解决问题。
下面是数据库第一行的示例:
�esk� republik', 'CZ', '100 00', 'Praha 10-Stra�nice (?�st) x)',
'Hlavn� m?sto Praha', 1)
这是整个mysql转储文件
我非常感谢你抽出时间。
1条答案
按热度按时间sigwle7e1#
github链接实际上是在谈论mojibake,而不是“双重编码”。
你用的是捷克字符,对吗?我看到了输出片段中的两个缺陷:“带问号的黑钻石”和“普通问号”。故障时分别处理,utf-8字符;我看到的不是我储存的
但是,在尝试解决问题之前,先弄清楚客户端使用的是什么编码。
黑钻石(
�esk�
)案例1(客户正在使用
latin2
,而不是utf8): 要存储的字节不编码为utf8。如果你能改变这个,就这么做。链接假定这是目标,而不是拉丁语2。如果客户真的需要拉丁语,需要更多的研究才能弄清楚该怎么做。 连接(或
SET NAMES)对于
INSERT以及
SELECT未设置为客户端的编码(
latin2或者
utf8或者
utf8mb4). 另外,检查数据库中的列是否正确
CHARACTER SET utf8mb4. (是的,您可以将其存储为latin2,但是由于您需要修复某些内容,所以我们使用首选编码。) 案例2(原始字节为utf-8): 连接(或
SET NAMES)对于
SELECT不是utf8/utf8mb4。修好这个。 检查数据库中的列是否正确
CHARACTER SET utf8(或utf8mb4)。 问号(普通的,不是黑钻石)(
m?sto): 检查客户端编码(如上所述) 数据库中的列不是字符集utf8(或utf8mb4)。修好这个(使用
SHOW CREATE TABLE.) 黑钻石往往是一个浏览器唯一的问题,由于缺乏
. 现在大多数浏览器默认这样做,但它们可能会感到困惑。 有关使用的信息,请参见链接
SELECT col, HEX(col) ...` 用于调试存储的内容。所以,我猜你实际上
latin1
,不是latin2
. 运行这3个需要根据客户机中的编码进行设置。