Joe*_*yle 5 php phpunit mbstring
出于某种原因,mb_convert_encoding在phpunit中运行时,我得到了意想不到的结果.例如,执行以下操作:
var_dump( mb_convert_encoding( utf8_decode( 'ö' ), 'UTF-8' ) === 'ö' )
上面的返回bool (true)在PHP-FPM和PHP-CLI下,但是在PHPunit下返回false,mb_convert_encoding()正在做某事,它只是编码为乱搞的字符串.
我的猜测是您正在使用一组不同的 mbstring ini 设置。这是解决该问题的一种方法。首先,您可以在 cli 中运行php -i |grep -i "mb"来查看它们。
然后创建一个 phpunit 测试来断言这些值都是相同的。这是我的(我只做了可能的嫌疑人):
\n\nclass MbStringTest extends PHPUnit_Framework_TestCase{\n\nfunction test1(){\n$this->assertEquals(\'UTF-8\', ini_get(\'mbstring.internal_encoding\'));\n$this->assertEquals(0, ini_get(\'mbstring.encoding_translation\'));\n$this->assertEquals(\'\', ini_get(\'mbstring.detect_order\'));\n$this->assertEquals(0, ini_get(\'mbstring.strict_detection\'));\n\n$s=\'\xc3\xb6\';\n$this->assertEquals($s,mb_convert_encoding( utf8_decode( $s ), \'UTF-8\' , \'ISO-8859-1\'));\n}\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n旁白:我无法让你的代码工作。我需要告诉它源编码是 ISO-8859-1。即自动检测输入字符集出错。如果您只是在寻找快速修复方法并且不关心原因,那么显式添加第三个参数mb_convert_encoding可能就是您所需要的。
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |