gpt4 book ai didi

php - 为什么 mb_convert_case 在 PHP 5.4 中破坏了我的字符串,而在 5.2 中却没有?

转载 作者:可可西里 更新时间:2023-11-01 14:04:08 24 4
gpt4 key购买 nike

我有以下代码:

header('Content-type: text/html; charset=utf-8');
$str = 'áá áá';
echo $str."\n";
echo mb_convert_case($str, MB_CASE_TITLE)."\n";
echo bin2hex($str)."\n";
echo bin2hex(mb_convert_case($str, MB_CASE_TITLE))."\n";

使用 PHP 5.2.2,我得到以下输出:

áá áá
áá áá
c3a1c3a120c3a1c3a1
c3a1c3a120c3a1c3a1

使用 PHP 5.4.3,我得到这个:

áá áá
á� á�
c3a1c3a120c3a1c3a1
c3a1e3a120c3a1e3a1

我在这两种情况下的预期输出都是:

áá áá
Áá Áá
c3a1c3a120c3a1c3a1
c381c3a120c381c3a1

所以我有两个问题:

  1. 为什么 á 没有被转换为 Á?
  2. 为什么 PHP 5.4 破坏了我的字符串?

最佳答案

$encoding 传递给对 mb_ 函数的每次调用,或者设置:

mb_internal_encoding("UTF-8");

确保 PHP 知道您正在使用的编码。否则编码来自 php.ini,或者默认的 ISO-8859-1(如果其中未包含的话)。

因此您的 5.4 安装默认为 ISO-8859-1,因此将 UTF-8 序列的前导字节小写,从而破坏它。我在 5.2 中也发生了同样的情况,所以也许您的 5.2 安装有其他不同之处 - 也许 ini 中的 internal_encoding 被设置为其他字节位置没有字母的东西?

关于php - 为什么 mb_convert_case 在 PHP 5.4 中破坏了我的字符串,而在 5.2 中却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746231/

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