0

以前はデータをデータベースにインポートするときにエンコードの問題がありましたが (phpmyadmin の奇妙な文字)、データを挿入する前に utf8_decode() で修正しました。

だから今、私は自分のデータを取得しますが、文字列に何か問題があります...

echo '<pre>';
        var_dump($product);
        echo '<br>';
        var_dump( json_encode($product));
        echo '</pre>';
        echo '<br>'.mb_detect_encoding($product->name);
        echo '<br>'.$product->name;
        echo '<br>'.mb_convert_encoding($product->name, 'ISO-8859-1');
        $product->name = 'H2O AUDIO Waterproof-Ohrhörer Surge Pro Mini BA1-GY';
        echo '<br>Revu encode: '.mb_detect_encoding($product->name);
        echo '<br>'.mb_detect_encoding($product->name);
        echo '<br>Revu: '.$product->name;
        echo '<br>'.mb_convert_encoding($product->name, 'ISO-8859-1');
        echo '<br>';
        var_dump( json_encode($product));

これは私に与えます:

object(Application_Model_Product)#42 (13) {
  ["id_product"]=>
  string(6) "359805"
  ["id_community_ask"]=>
  NULL
  ["barcode"]=>
  string(13) "3000000010907"
  ["name"]=>
  string(51) "H2O AUDIO Waterproof-Ohrhörer Surge Pro Mini BA1-GY"
  ["description"]=>
  NULL
  ["image"]=>
  NULL
  ["status"]=>
  string(1) "2"
  ["nb_votes_halal"]=>
  string(1) "0"
  ["nb_votes_harram"]=>
  string(1) "0"
  ["date_created:protected"]=>
  NULL
  ["date_edited:protected"]=>
  NULL
  ["updated:protected"]=>
  string(1) "0"
  ["imported:protected"]=>
  string(1) "1"
}

string(173) "{"id_product":"359805","id_community_ask":null,"barcode":"3000000010907","name":null,"description":null,"image":null,"status":"2","nb_votes_halal":"0","nb_votes_harram":"0"}"

UTF-8
H2O AUDIO Waterproof-Ohrhörer Surge Pro Mini BA1-GY
H2O AUDIO Waterproof-Ohrhörer Surge Pro Mini BA1-GY
Revu encode: UTF-8
UTF-8
Revu: H2O AUDIO Waterproof-Ohrhörer Surge Pro Mini BA1-GY
H2O AUDIO Waterproof-Ohrhörer Surge Pro Mini BA1-GY
string(227) "{"id_product":"359805","id_community_ask":null,"barcode":"3000000010907","name":"H2O AUDIO Waterproof-Ohrh\u00f6rer Surge Pro Mini BA1-GY","description":null,"image":null,"status":"2","nb_votes_halal":"0","nb_votes_harram":"0"}"

そして、「name」フィールドに何かが含まれていることがわかりますが、json でエンコードすると「null」と表示されます...json は utf8 でのみ機能することを知っているので、mb_detect_encoding を呼び出して utf8 であることを確認しています...

「name」フィールドが「null」を返す理由について何か考えはありますか?

4

1 に答える 1