私はあなたとは異なるmbstring ini設定を使用していると思います。これを解決する1つの方法があります。最初に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であることを伝える必要がありました。私。入力文字セットの自動検出が間違っていました。簡単な修正を探していて気にしない場合は、3番目のパラメータを明示的にmb_convert_encoding
に追加するだけで十分です。
phpunitが異なるphp.iniを使用している可能性はありますか?php_mbstring拡張が有効になっていないのはなぜですか? – jasir
@mins私が言ったように 'mbstring'拡張がロードされています - mb_convert_encodingは_something_を返します;間違っています! –
'test.php'はBOMのないUTF-8でエンコードされていますか? –