我有一个sql表,其中一列 utf8_unicode_ci
编码,但表本身 latin1_swedish_ci
编码(见 Row Statistics
在 Structure
第页,共页 phpMyAdmin
).
访问数据库的phpwebapp正确地显示日语文本,但在 phpMyAdmin
一切都是莫吉巴克。webapp(正确)显示日语文本 Xで有名な
,但在 phpMyAdmin
它是 Xã¦ã‚™æœ‰åãª
( hex()
输出为 312E2058C3A3C281C2A6C3A3E2809AE284A2C3A6C593E280B0C3A5C290C28DC3A3C281C2AA
).
用于生成表中数据的应用程序现在已损坏,但我需要添加一些新记录。我怎样才能重现在table上找到的mojibake呢?
我试着用Python复制mojibake:
def rev_engineer(utf8):
mojibake = utf8.encode('utf8').decode('latin1')
print(mojibake)
rev_engineer('Xで有名な')
# output: Xã¦ãæåãª
# should be: Xã¦ã‚™æœ‰åãª
这显然非常相似,但并不完全相同。然后我尝试遍历python文档中列出的所有可能的编码,并对所有可能的组合进行编码/解码,但也没有找到匹配的。知道我错过了什么吗?
1条答案
按热度按时间0lvr5msh1#
为了确保我的角色将被解释为utf8序列
检查我有2个字节é
检查我是否有相同的值
通过复制/粘贴输出字符串,我可以反转过程
如果有几行要插入,就用pphpmyadmin插入行,如果不能通过mysql命令直接插入行。
如果要使用python,可以使用以下模块:https://pypi.org/project/mysql-latin1-codec/