gpt4 book ai didi

php - mb_convert_encoding() 不适用于 phpunit

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:07 25 4
gpt4 key购买 nike

出于某种原因,在 phpunit 中运行 mb_convert_encoding 时,我得到了意想不到的结果。例如执行以下操作:


var_dump( mb_convert_encoding( utf8_decode( 'ö' ), 'UTF-8' ) === 'ö' )

上面在PHP-FPM和PHP-CLI下返回bool (true),但是在PHPunit下返回false,mb_convert_encoding()正在做一些事情,它只是编码到一个乱七八糟的字符串。

最佳答案

我猜你正在使用一组不同的 mbstring ini 设置。这是解决该问题的一种方法。首先,您可以在 cli 中运行 php -i |grep -i "mb" 来查看它们。

然后创建一个断言所有值都相同的 phpunit 测试。这是我的(我只做了可能的嫌疑人):

class MbStringTest extends PHPUnit_Framework_TestCase{

function test1(){
$this->assertEquals('UTF-8', ini_get('mbstring.internal_encoding'));
$this->assertEquals(0, ini_get('mbstring.encoding_translation'));
$this->assertEquals('', ini_get('mbstring.detect_order'));
$this->assertEquals(0, ini_get('mbstring.strict_detection'));

$s='ö';
$this->assertEquals($s,mb_convert_encoding( utf8_decode( $s ), 'UTF-8' , 'ISO-8859-1'));
}

}

旁白:我无法让您的代码正常工作。我需要告诉它源编码是 ISO-8859-1。 IE。输入字符集的自动检测出错了。如果您只是想快速解决问题而不关心原因,那么将第三个参数显式添加到 mb_convert_encoding 可能就是您所需要的。

关于php - mb_convert_encoding() 不适用于 phpunit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14442163/

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