Bri*_*ian 10 php mysql character-encoding
我正在使用旧的mysql数据库中的数据.这个数据库中有一个表,其字符串列的编码设置为"cp1252 West European(latin1)"(与Windows-1252相同).从mysql命令提示符查询数据时,此字段中的数据表示为:
Obama’s
这应该是读
Obama’s
我试过按照如何将整个MySQL数据库字符集和整理转换为UTF-8的接受答案?在MySQL中将字段转换为UTF-8,但没有区别.
我还尝试在该表中插入一个新行,使用Obama’s
该字段的文本(同样,从mysql命令提示符).但是,当我查询刚刚插入的同一行时,正确表示了此文本.当字段设置为latin1并且设置为UTF-8时,我尝试执行该插入.结果相同.
这让我相信,当坏数据被插入数据库时,它首先被PHP错误编码.这是我变得模糊的地方.
我可以假设数据是通过Web表单插入并使用PHP处理的.PHP在将其插入数据库之前做了什么?它是否将字符串转换为UTF-8,根据此有用页面上的表格,它使用三个字节%E2 %80 %99
来表示’
字符.我有这个权利吗?
如果这是正确的,我有什么选择来修复这些数据?我想将表及其字段转换为UTF-8编码,但这似乎无法修复文本.我是否必须编写一个手动将这些字符更改为应该是什么的脚本?
Imr*_*e L 26
select convert(binary convert(field_name using latin1) using utf8) from table_name
Run Code Online (Sandbox Code Playgroud)
如果显示正确,您可以进行更新.
归档时间: |
|
查看次数: |
4003 次 |
最近记录: |