0

phpmyadmin ページを使用して、特殊文字を含むフィールドにエントリを挿入すると、以下の関数は特殊文字を含むフィールドに「null」を返しますが、特殊文字を含まないフィールドは適切に表示されます。

Web ページ (jQuery DataTables) を使用して、同じ特殊文字を含むフィールドにエントリを挿入すると、問題なく適切に表示されます。

手動で挿入するだけでデータの表示にバグが生じるのはなぜですか?
私の DB コレートは UTF8 です。HTML と PHP の文字セットを utf-8 に設定し、utf8_encode() を使用しようとしましたが、どれも機能していないようです。

私のPHPコードと使用法は次のとおりです。

    $connection = ($GLOBALS["___mysqli_ston"] = mysqli_connect('localhost',  '',  '')) or die(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));
    ((bool)mysqli_query( $connection, "USE ")) or die(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));

    $aFieldType = array('tema', 'vinculo', 'empresa', 'subcontratada', 'gerencia', 'areasolicitante', 'cc');
    $stack=array();
    foreach ($aFieldType as $type)
    {
        $sql="SELECT {$type} FROM treinamentos ORDER BY {$type} ASC";
        $result = mysqli_query($GLOBALS["___mysqli_ston"], $sql);

        while($row = mysqli_fetch_array($result))
        {
            $stack[$type][] = array($row[$type],$row[$type]);
        }
    }
?>



<script type="text/javascript">
            aDataInitial = '<?php  echo json_encode($stack);?>';
        </script>
4

1 に答える 1

1

phpMyAdmin を介してテーブルにデータを挿入し、コンソール クライアントを使用して実際に DB に挿入されたものを確認します。おそらく、phpMyAdmin UI で文字セットの設定が間違っている可能性があります。

結局のところ、DB、Web サイトに UTF-8 が設定されていることを明確に述べており、独自の webapp の UI はデータを正しく挿入します。したがって、チェックしなかったのは phpMyAdmin だけです。mysqlコンソールクライアントも使用して、特別な文字列を挿入しようとします。そしてもちろん、UTF-8出力に設定されたクライアントに挿入されているデータも確認してください。

于 2013-04-13T04:37:45.853 に答える