Leo*_*rdo 46 php mysql character-encoding utf8-decode mojibake
我的页面经常显示像Ã,Ã,Ã,Ã,Ã,代替普通字符的东西.
我使用utf8作为头页和MySQL编码.这是怎么发生的?
Ray*_*Ray 47
这些是utf-8编码的字符.使用utf8_decode()将它们转换为普通的ISO-8859-1字符.
Gum*_*mbo 25
如果您看到这些字符,您可能只是没有正确指定字符编码.因为这些字符是使用ISO 8859-1或Windows-1252等单字节编码解释UTF-8多字节字符串时的结果.
在这种情况下,ë可以用0xC3 0xAB编码,代表ëUTF-8中的Unicode字符(U + 00EB).
dav*_*rad 13
即使utf8_decode是一个有用的解决方案,我更喜欢纠正表本身的编码错误.在我看来,纠正坏人物本身比在代码中制作"黑客"更好.只需replace在桌子上的字段上做一个.要纠正OP中的错误编码字符:
update <table> set <field> = replace(<field>, "ë", "ë")
update <table> set <field> = replace(<field>, "Ã", "à")
update <table> set <field> = replace(<field>, "ì", "ì")
update <table> set <field> = replace(<field>, "ù", "ù")
Run Code Online (Sandbox Code Playgroud)
<table>mysql表的名称在哪里,是表<field>中列的名称.这是一个非常好的检查列表,通常是坏编码的windows-1252到utf-8字符 - > 调试图表将Windows-1252字符映射到UTF-8字节到Latin-1字符.
在尝试用SQL替换任何字符之前,请记住备份您的表!
[ 我知道这是一个非常古老的问题的答案,但再一次面对这个问题.一些旧的Windows机器在将文本插入到utf8_general_ci整理表之前没有对文本进行正确编码.]
小智 5
我实际上找到了对我有用的东西。它将文本转换为二进制,然后转换为 UTF8。
\n有编码问题的源文本:\n如果 \xc3\x83\xc2\xa2\xc3\xa2\xe2\x80\x9a\xc2\xac\xc3\x8b\xc5\x93Yes\xc3\x83\xc2\xa2\xc3 \xa2\xe2\x80\x9a\xc2\xac\xc3\xa2\xe2\x80\x9e\xc2\xa2,你最后一次是什么
\nSELECT CONVERT(CAST(CONVERT(\n (SELECT CONVERT(CAST(CONVERT(english_text USING LATIN1) AS BINARY) USING UTF8) AS res FROM m_translation WHERE id = 865) \nUSING LATIN1) AS BINARY) USING UTF8) AS 'result';\nRun Code Online (Sandbox Code Playgroud)\n更正的结果文本:\n如果 \xe2\x80\x98Yes\xe2\x80\x99,那么你的最后一个是什么
\n我的源代码被错误编码了两次,所以我让两个人做了两次。您可以一次性使用:
\nSELECT CONVERT(CAST(CONVERT(column_name USING latin1) AS BINARY) USING UTF8) AS res FROM m_translation WHERE id = 865;\nRun Code Online (Sandbox Code Playgroud)\n如有任何格式错误,请原谅
\n