/ / jquery-ui autouzupełnianie nie wyświetla poprawnego utf-8 - php, jquery, jquery-ui, kodowanie znaków, mysqli

Autouzupełnianie jquery-ui nie wyświetla poprawnego kodu utf-8 - php, jquery, jquery-ui, kodowanie znaków, mysqli

Wystąpiły pewne problemy z wyświetlaniem danych w autouzupełnianiu jquery ui, gdy wyświetlaję tekst, nie jest on zakodowany w utf-8, mimo że moja db i strona używają utf-8.

Również, gdy próbuję wyświetlić go w inny sposób, wyświetla się normalnie z odpowiednim kodowaniem.

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

Skrypt php pobierający elementy.

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;

Teraz, tak jak powiedziałem, próbowałem wyświetlać dane, w każdy możliwy sposób i tylko z funkcją autouzupełniania jest wyświetlany nieprawidłowo.

Odpowiedzi:

0 dla odpowiedzi № 1

Komentarz SaschaM78 sprawił, że spojrzałem we właściwym kierunku, patrząc na json_encode, odkryłem, że działa tylko z utf-8, co skłoniło mnie do próby zakodowania każdego łańcucha do utf-8, używając mb_convert_encoding, które rozwiązały mój problem, teraz działa dobrze.

Nowy kod 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);