私の推測では、別の 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
場合があります。