gpt4 book ai didi

php - 来自 MySQL 数据库的字符的 UTF-8 问题(例如 é as É)

转载 作者:可可西里 更新时间:2023-11-01 07:35:49 24 4
gpt4 key购买 nike

我知道有数百个关于 UTF-8 问题的问题,但我尝试了所有我能找到的方法,但没有一个有帮助。

事实:我试图从我的 MySQL 数据库中读取一个包含 é 的字符串,并将其显示在 PHP 页面上。实际上,它确实显示为 é(但字体无法识别它,因此使用了另一种默认字体)。当我想使用 PHP 函数将此字符串转换为文件名以进行字符串替换时,问题就出现了。 PHP 根本无法将其识别为 é 字符。

以下是我正在做的事情的简要概述:

1) 字符串存储在 MySQL 数据库中。 MySQL 服务器设置为:MySQL连接排序规则utf8_unicode_ci
MySQL 字符集:UTF-8 Unicode (utf8)
数据库本身设置为collat​​ion utf8_unicode_ci(MyISAM存储引擎,由于共享服务器不可更改)
实际表设置为collcation utf8_unicode_ci(InnoDB存储引擎)

é 在 phpMyAdmin 中正确显示。数据通过 Java 程序插入到数据库中,但我也尝试过使用手动输入的数据(在 phpMyAdmin 中输入)。

2) 未设置 PHP default_charset(无值),我在共享服务器上并放置手动覆盖 php.ini 似乎不起作用。使用 ini_set("default_charset", 'utf-8');有效,但对我遇到的问题没有影响。

3) 在我运行实际的选择查询之前,我查询了 SET NAMES 'utf8' .查询本身是无关紧要的,但为了测试,我选择了一个简单的 SELECT title FROM items WHERE item_id = 1

4) PHP 文件本身是 UTF-8 编码的。我已经为 html 设置了正确的字符集 <meta http-equiv="content-type" content="text/html; charset=utf-8" />

5) 为了测试这个问题,我在返回的字符串 (Astérix) 上使用了 htmlentities,检查它被转换为 Ast&Atilde;&copy;rix 的源代码。这当然是不正确的。因此,该字符串显示为 Astérix在浏览器中。

这可能是什么原因?对我来说,似乎我将所有可以设置为 UTF-8 的都设置了。

最佳答案

http://php.net/manual/en/ref.mbstring.php - 查看多字节字符串函数。

关于php - 来自 MySQL 数据库的字符的 UTF-8 问题(例如 é as É),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com