0

jquery ui オートコンプリートでデータを表示する際に問題が発生しました。テキストを表示すると、db とページが utf-8 を使用しているにもかかわらず、utf-8 でエンコードされていません。

また、他の方法で表示しようとすると、正しいエンコーディングで正常に表示されます。

jquery ui スクリプト。

<script type="text/javascript" charset="utf-8">
$(function() {
    function log( message ) {
        $( "<div>" ).text( message ).prependTo( "#log" );
        $( "#log" ).scrollTop( 0 );
    }

    $( "#items" ).autocomplete({
        source: "getSurgestedItems.php",
        minLength: 2,
        select: function( event, ui ) {
            log( ui.item ?
                "Selected: " + ui.item.value + " aka " + ui.item.id :
                "Nothing selected, input was " + this.value );
        }
    }).data("autocomplete")._renderItem = function(ul, item){
        return $("<li>")
            .data("item.autocomplete", item)
            .append("<a>" + item.value + "<br>" + item.desc + "</a>")
            .appendTo(ul);
    };
});
</script>

項目を取得する php スクリプト。

while ($row = $result->fetch_assoc()) {
$i++;
if(!$first){
    $json .=',';
}
else{
    $first = false;
}

$name = addslashes($row['name']);
$desc = mb_substr(addslashes($row['description']), 0, 60, 'UTF-8');

$desc .= '...';

$json .='{"value" : "'.$name.'",
        "desc" : "'.$desc.'"}';
}
$json .=']';

echo $json;

今私が言ったように、私が考えることができるあらゆる方法でデータを表示しようとしましたが、それは間違って表示されるオートコンプリート機能でのみです。

4

1 に答える 1

0

SaschaM78 コメントは、json_encode を調べているときに、正しい方向に目を向けさせてくれました。これは utf-8 でのみ機能することがわかりました。今はうまくいきます。

新しい php コード。

$json = array();

while ($row = $result->fetch_assoc()) {

$name = mb_convert_encoding($row['name'], 'UTF-8');
$desc = mb_convert_encoding(substr($row['description'], 0, 60), 'UTF-8');

$desc .= '...';

$json[] = array('value' => $name, 'desc' => $desc); 
}

echo json_encode($json);
于 2012-12-18T14:22:53.137 に答える