如何使用 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 0x20) 是无效的 UTF-8 序列。 只是这个字符不能转换。所以我只是通过使用 str_replace() 将它从“Ô更改为“à”:D 感谢@AndreKR 的帮助 哦,我明白了。 UTF-8 中的à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 中的 é,ê,... 转换为普通字符串 é,â,...?的主要内容,如果未能解决你的问题,请参考以下文章

连接PhpÃun serveur MySQL

MySQL 数据库中字符的 UTF-8 问题(例如 é as é)

MySQL5导入php脚本für 1和1主页服务器

计算tamaño BBDD en MySQL

将重音字符 é 插入 Symfony2 中的表单时,如何在 mysql 数据库中将重音字符 é 保存为 é?

在 MySql 更新语句中使用函数