PHP:mb_strtoupper 不工作

2024-02-22

我对 UTF-8 和 mb_strtoupper 有疑问。

mb_internal_encoding('UTF-8');
$guesstitlestring='Le Courrier de Sáint-Hyácinthe';

$encoding=mb_detect_encoding($guesstitlestring);
if ($encoding!=='UTF-8') $guesstitlestring=mb_convert_encoding($guesstitlestring,'UTF-8',$encoding);

echo "DEBUG1 $guesstitlestring\n";
$guesstitlestring=mb_strtoupper($guesstitlestring);
echo "DEBUG2 $guesstitlestring\n";

Result:

DEBUG1 Le Courrier de Sáint-Hyácinthe
DEBUG2 LE COURRIER DE S?INT-HY?CINTHE

我不明白为什么会发生这种情况?我正在尝试尽可能小心地处理编码。该字符串首先以 UTF-8 形式给出,经过验证并可能重新转换为 UTF-8。这是一场噩梦!

UPDATE

所以我发现这是由我通过控制台输入参数和从控制台返回的参数共同引起的。所以他们在进来和出去的时候都是乱码。解决方案是不要以这种方式输入任何参数,或以这种方式取出参数。

感谢大家帮助解决这个问题!


代替strtoupper()/mb_strtoupper() use mb_convert_case()由于不同编码之间的大写转换非常棘手,因此还要确保您的字符串是 UTF-8。

$content = 'Le Courrier de Sáint-Hyácinthe';

mb_internal_encoding('UTF-8');
if(!mb_check_encoding($content, 'UTF-8')
    OR !($content === mb_convert_encoding(mb_convert_encoding($content, 'UTF-32', 'UTF-8' ), 'UTF-8', 'UTF-32'))) {

    $content = mb_convert_encoding($content, 'UTF-8'); 
}

// LE COURRIER DE SÁINT-HYÁCINTHE
echo mb_convert_case($content, MB_CASE_UPPER, "UTF-8"); 

工作示例:http://3v4l.org/enEfm#v443 http://3v4l.org/enEfm#v443

另请参阅我在 PHP 网站上关于转换器的评论:http://www.php.net/manual/function.utf8-encode.php#102382 http://www.php.net/manual/function.utf8-encode.php#102382

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:mb_strtoupper 不工作 的相关文章

  • 一个模型中的多个表 - Laravel

    我的索引页使用数据库中的 3 个表 索引滑块 索引特征 页脚框 我使用一个控制器 IndexController php 并像这样调用三个模型 public function index return View make index gt
  • 将 IP 地址与 IPv6 块进行比较

    我使用 PHP 将用户 IP 地址与 IP 块列表进行比较 其中大多数是 IPv4 但其中一些是 IPv6 我从用户那里获得的 IP 地址始终与 IPv4 兼容 至少我是这么假设的 我将如何比较这个 这就是我现在正在使用的 function
  • GoLang - 坚持使用 ISO-8859-1 字符集

    我正在开发一个项目 我们需要将信息保存在具有 ISO 8859 1 表的旧数据库中 因此 在向数据库写入内容之前 我需要将其从 UTF 8 转换为 ISO 8859 1 每次从数据库检索它时 我都需要将其转换回 UTF 8 我试图使用图书馆
  • 手动检查 php 中的 jpeg 文件结尾标记 ffd9 (?) 以捕获截断错误

    基本上是尝试从集合中删除损坏的 过早结束的 jpeg 文件 我认为如果文件末尾标记不存在 则意味着图像被截断 因此我认为它对我的目的无效 这是检查声音的方法吗 如果是的话 我有什么想法可以在 php 中实现这个吗 cheers 尝试这个 j
  • 将以utf-8字符串为内容的unicode转换为str

    我正在使用 pyquery 来解析页面 dom PyQuery http zh wikipedia org w index php title CSS printable yes variant zh cn content dom mw c
  • 将 H:i 转换为 ISO 8601 持续时间标准

    菜谱的持续时间作为字符串存储在我的数据库中 如下所示 01 50 我试图将其转换为 ISO 8601 持续时间标准 但没有成功 这就是我用来调用该字段并解析页面的内容 totalTime extraField gt value itempr
  • CodeIgniter 数据库连接未关闭

    我在 CodeIgniter 中建立了一个社交社区网站 该网站现在获得了相当多的流量 托管公司已经开始抱怨并说数据库正在接收空连接以及未关闭的连接 我不完全确定空查询是什么或者最终如何发出空查询 有什么想法吗 我添加了额外的代码以在代码结束
  • 我的项目中的更新语句未更新表中的数据

    我正在尝试更新 Employee MY 查询显示消息 员工记录已成功更新 但它没有在表中更新我的代码如下 eid intval GET uin uin POST uin fname POST firstName lname POST las
  • 设置 Cron 作业在 24 小时后删除文件

    我阅读了所有相关问题 但无法理解它们 我正在使用 Plesk CPanel 来设置 cron 作业 正如大家所建议的那样 我想在 24 小时后删除文件夹中的所有文件 假设我必须每 2 分钟后删除它 这样我就可以检查它是否工作 我有两个选择
  • 雄辩的 laravel:如何从 ->get() 获取行数

    我在弄清楚如何使用这个集合来计算行数时遇到了很多麻烦 wordlist DB table wordlist gt where id lt correctedComparisons gt get 我努力了adding gt count 但没有
  • 依赖注入类 - 在哪里存储配置

    当对数据库处理程序等使用依赖注入而不是单例时 最好将配置保存在哪里 即用户名密码主机等 保留在类内部 使用容器类或使用静态配置类或使用文件 我通常将它们保存在网络根目录之外的文件中
  • Zend 框架复选框装饰器

    我想要完成的是让复选框标签显示在复选框输入字段之后 在它们的右侧 我现在正在使用这些装饰器 private checkboxDecorators array Label array array data gt HtmlTag array t
  • 将字符串 (ISO) 转换为日期 PHP

    我正在尝试将字符串转换为日期PHP 我收到的字符串格式为 2016 07 16T1 22 04 324 1030 OR 2016 12 20T03 24 59 000Z 当我尝试这个时 newDate DateTime createFrom
  • 如何更改 TextWriter 对象中的编码?

    我有 xml 是通过 API 在另一个 resurse 中发送的 我通过 XDocument 创建它 XDocument xDoc new XDocument new XDeclaration 1 0 utf 8 yes new XElem
  • VB.NET 密码哈希函数的 PHP 等效项 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有以下 Visual Basic NET 函数 用于生成存储在内部数据库中的密码哈希值 Public Function HashPass
  • php 脚本无法使用冒号 (:) 读取 xml 数据

    我尝试读取 youtube xml 数据宽度 php 但卡住了 因为 youtube 在他的 API 中使用冒号 准确地说 这是我使用的脚本 video array some arrays here separated width comm
  • 展开/折叠 div

    我在 PHP MySQL 生成的单个页面上有多个展开 折叠框 问题是 当我单击一个链接来展开一个框时 它会展开所有框 我考虑过在课程末尾附加帖子 ID div class postreplycontainer POST ID 但我不确定这是
  • 在视图中获取路线名称

    我尝试设计导航菜单 我有 3 个这样的项目 仪表板 Pages List Add Articles List Add 现在我想大胆Pages当用户处于此部分时 如果在Add页面我都想要粗体Pages and Add my routes ph
  • PHP:检查多维数组中的重复值

    我对多维数组有这个问题 给定以下多维数组 Array 0 gt Array a b c 1 gt Array x y z 2 gt Array a b c 3 gt Array a b c 4 gt Array a x z 我想检查它的值并
  • 如何将变量从 JavaScript 传递到 PHP?

    我正在使用 jQuery 来计算价格 这是我的 JavaScript 的一小段 Prices radio var curLam gloss input name lamination click function var gloss 5 v

随机推荐