最近,我导出了mySQL
数据库的一部分,并注意到该文本中包含几个奇怪的字符。例如,字符串’
经常出现。
当试图找出这意味着什么时,我发现了stackoverflow问题:字符编码和’问题。从这个问题,我现在知道该字符串’
代表一个引号。
但是,我如何才能更普遍地找到一个字符串代表什么呢?例如,这封信也Â
经常出现在我的数据库中,实际上现在正在某个页面上给我造成问题,为了解决该问题,我想知道该字符的含义。
我查看了几个显示字符编码的表,但是还无法弄清楚如何使用这些表来了解为什么’
意味着'
,或更重要的是,Â
代表什么。如果有人能指出正确的方向,我将不胜感激。
的latin1编码为’
(十六进制)E28099
。
对于UTF8编码’
是E28099
。
但是您粘贴了C3A2E282ACE284A2
,这是该撇号的“双重编码”。
显然发生的事情是您’
在客户中工作过。客户端正在生成utf8编码。但是您与MySQL的连接参数为“ latin1”。因此,您的INSERT
陈述式尽职尽责地将其视为3个latin1字符E2 80 99
(在视觉上’
),并将每一个转换为utf8,hex C3A2 E282AC E284A2
。
阅读《麻烦》中有关UTF-8字符的“双重编码” ;我看到的不是我存储的
同时,浏览器倾向于宽容双重编码,否则可能表明 ’
latin1字符均为1字节(2个十六进制数字)。utf8 / utf8mb4字符为1到4个字节;练习中出现了一些2字节和3字节编码。
至于Â
...转到http://mysql.rjweb.org/doc.php/charcoll#8_bit_encodings并查看那里的第二张表。请注意,前两列是如何以开始的Â
。在latin1中,即为hex C2
。在utf8中,许多标点符号被编码为2个字节:C2xx
。例如,版权符号©
是utf8 hex C2A9
,它被误解了©
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句