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 № 1Il 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);