我正在尝试使用以下查询对列数据强制执行UTF-8编码。
SELECT convert(binary convert(summary using latin1) using utf8) FROM blogs b;
以下警告登录mysql控制台
上述警告中以下字符代表什么?
'AE2065','927320','927320','927320','F16120','C02070','AE2043','F16F6C','93426F','93426F','E4646F','E46E73','E46DE4','E47974','C02070','934355','934355'
如何找到上面列表中相应的实际字符符号?
答案 0 :(得分:2)
嗯,给定这些源字符集,你会得到这个文本。例如,有几个人将factor
视为from django.urls import path
urlpatterns = [
...
path('articles/<slug:some_title>/', myapp.views.blog_detail, name='blog_detail'),
...
]
AE
对于®
,可能的解释是CONVERT(CONVERT(UNHEX('AE2065') USING %s) USING utf8mb4):
cp1250, cp1251, cp1256, cp1257, geostd8, hebrew, latin1, latin5, latin7
4 3 '® e'
cp850, cp852, keybcs2 4 3 '« e'
cp866 4 3 'о e'
hp8 4 3 'Û e'
latin2 4 3 'Ž e'
macce 4 3 'ģ e'
macroman 4 3 'Æ e'
armscii8 5 3 '… e'
cp932, sjis 5 3 'ョ e'
koi8r, koi8u 5 3 '╝ e'
tis620 5 3 'ฎ e'
92
到目前为止,我发现’
很常见。我会尝试另一个:
CONVERT(CONVERT(UNHEX('927320') USING %s) USING utf8mb4)
cp932, sjis 4 2 '痴 '
euckr 4 2 '뭩 '
gbk 4 2 '抯 '
cp850 4 3 'Æs '
cp852 4 3 'ĺs '
cp866 4 3 'Тs '
keybcs2 4 3 'Žs '
macce, macroman 4 3 'ís '
cp1250, cp1251, cp1256, cp1257, geostd8, latin1
5 3 '’s '
再次,latin1似乎很可能。
所以,...你需要做的是声明你提供给MySQL的字节是用latin1
编码的。然后它们将自动转换为列的声明,如果您需要中文和表情符号,则应为CONVERT(CONVERT(UNHEX('F16120') USING %s) USING utf8mb4)
big5 4 2 '鎙 '
cp932 4 2 ' '
gbk 4 2 '馻 '
armscii8 4 3 'րa '
cp1250, cp1257, dec8, latin1, latin2, latin5, latin7
4 3 'ña '
cp1251 4 3 'сa '
cp850, keybcs2 4 3 '±a '
cp852 4 3 '˝a '
cp866 4 3 'ёa '
greek 4 3 'ρa '
hebrew 4 3 'סa '
hp8 4 3 'þa '
koi8r, koi8u 4 3 'Яa '
macce 4 3 'Ůa '
macroman 4 3 'Òa '
tis620 5 3 '๑a '
(或latin1
。
由于你似乎已经在表格中有latin1字节(在utf8
列中),这不是你是否有utf8的问题;你做不有utf8。该列不声明为utf8。
那么,你真的想做什么?也许您想要utf8mb4
表将字符集更改为utf8?参见
summary
你所接近的是:
ALTER
但是,你会用它做什么?如果列是latin1,并且您将转换后的内容重新粘贴,则会出现“双重编码”,使事情变得更糟。
也许您还有一个位于latin1列中的utf8编码字符?那是一团糟 - “双重编码”。
请参阅Trouble with UTF-8 characters; what I see is not what I stored,然后进一步详细说明您的问题。
答案 1 :(得分:0)
我猜您的数据存储为latin-1
字符集。您可以将其转换为:
SELECT convert(cast(convert(summary using latin1) as binary) using utf8) FROM blogs b;
您确实打算将数据存储为latin-1
吗?如果您打算将summary
存储为UTF-8
,则可以按如下方式更新您的表格:
UPDATE blogs SET
summary=convert(cast(convert(summary using latin1) as binary) using utf8)
WHERE 1