/ / jquery-ui completamento automatico non visualizza utf-8 corretto - php, jquery, jquery-ui, codifica caratteri, mysqli

jquery-ui completamento automatico non visualizza utf-8 corretto - php, jquery, jquery-ui, codifica caratteri, mysqli

Ho incontrato alcuni problemi con la visualizzazione dei dati in jquery ui completamento automatico, quando visualizzo il testo, non è codificato in utf-8, nonostante il mio db e la pagina stiano usando utf-8.

Inoltre, quando provo a visualizzarlo in un altro modo, si mostra normalmente con la giusta codifica.

Lo script ui jquery.

<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>

Lo script php che ottiene gli elementi.

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;

Ora, come ho detto, ho provato a visualizzare i dati, in ogni modo a cui riesco a pensare ed è solo con la funzione di completamento automatico che viene visualizzata in modo errato.

risposte:

0 per risposta № 1

Il commento di SaschaM78 mi ha fatto guardare nella giusta direzione, mentre guardando in json_encode, ho scoperto che avrebbe funzionato solo con utf-8, che mi ha portato a provare e codificare ogni stringa in utf-8, usando mb_convert_encoding, che hanno risolto il mio problema, ora funziona bene.

Il nuovo codice 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);