如何使用 php 将数据库 mysql 中的 é,ê,... 转换为普通字符串 é,â,...?
Posted
技术标签:
【中文标题】如何使用 php 将数据库 mysql 中的 é,ê,... 转换为普通字符串 é,â,...?【英文标题】:how to convert é,ê,... in database mysql to the normal string é,â,... using php? 【发布时间】:2012-10-22 04:14:05 【问题描述】:mysql中的数据有问题
使用 (1):"hello & hello ' hello è ..."
之类的字符串存储一些数据。还有一些数据存储有像 (2):"hello à hello é hello ê ..."
这样的字符串。
我可以将字符串(1)解为普通字符串,但不知道如何将字符串(2)转换为普通字符串?
注意:我们不能更改现有数据库中的数据:/ 此外,这两个样本都存储在同一个表中,表的字符集是 latin1!
【问题讨论】:
检查数据库/表排序规则将其设置为 UTF-8 utf8 数据库字段、网页和数据库连接 @swapnesh : 我们需要在不更改数据库的情况下修复它:( 【参考方案1】:hello à hello é hello ê
可能被 UTF-8 解释为 ISO-8859-1。
您可以更改解释,例如在浏览器中设置字符集,或使用 utf8_decode()
将其转换为 ISO-8859-1。
【讨论】:
为什么这个字符“Ô没有被转换? 所有字符 é,ê,... 都被转换,除了这个“Ô!你知道为什么吗? 我无法想象那可能是什么字母。在 UTF-8 中,一个 à (0xC3) 后面总是跟着第二个字节来形成一个字符。 Ãà
是0xC3 0xA0
。 ISO 8859-1 中的A0
是不可破坏的空间,例如在复制和粘贴时很容易破坏。【参考方案2】:
编辑-
在不改变数据库结构的情况下试试这个 --
ini_set('default_charset', 'YOUR_CHARACTER_SET')
或者试试这个 --
header('Content-Type: text/html; charset=iso-8859-1');
检查这个设置,它的所有表排序规则
【讨论】:
仅此一项也无济于事,因为数据会再次转换为 UTF-8。他必须使用 CONVERT(CAST(... as BINARY) USING ...) 之类的东西对其进行转换,但他写道,他无法更改数据库中的数据。 @swapnesh 两种解决方案都不是我的情况,因为 1. 我无法更改数据库。 2.我将文本转换为图像。所以不需要放标题。无论如何,谢谢你帮助我:)【参考方案3】:将CONVERT
用作CONVERT ("hello à hello é hello ê ...", ascii)
....
【讨论】:
以上是关于如何使用 php 将数据库 mysql 中的 é,ê,... 转换为普通字符串 é,â,...?的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 数据库中字符的 UTF-8 问题(例如 é as é)