Első ékezeteses betűnél félbevágott string + JSON

Első ékezeteses betűnél félbevágott string + JSON
2011-11-25T14:48:07+01:00
2011-11-26T02:02:14+01:00
2022-11-23T20:25:40+01:00
Malark
Sziasztok!

A nagy problémám az, hogy egy PHP scripten keresztül kell MySQL és MSSQL adatbázisokból megjelenítenem adatokat, JSON segítségével. A dolog működik is mind MSSQL, mind MySQL esetén, viszont mindkét esetben csak az első ékezetes betűig jelennek meg az adatok, a többi egyszerűen eltűnik. Mind az említett adatbázisok, mind a PHP szerver Latin1 (ISO-8859-1) kódolásúak és ha nem JSON_ENCODE-ot használok, hanem valami egyéb kiíratási módszert, akkor simán meg is jelennek böngészőben az ékezetek is gond nélkül. Viszont nem ez a cél, mert az eredményt nekem egy androidos készülékre kell átvarázsolnom és emiatt van szükségem mindenképpen a json_encode-ra. Ha valaki tud, kérem segítsen.

A problémás script:

<?php $databasehost = "localhost"; $databasename = "dbtest"; $databaseusername ="root"; $databasepassword = "xxxx"; $con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error()); mysql_select_db($databasename) or die(mysql_error()); $query = "select cikk_sorszam, megnevezes from meu_tetel"; $sth = mysql_query($query); if (mysql_errno()) { header("HTTP/1.1 500 Internal Server Error"); echo $query.'\n'; echo mysql_error(); } else { $rows = array(); while($r = mysql_fetch_assoc($sth)) { $rows[] = $r; } print json_encode($rows); } ?>
Mutasd a teljes hozzászólást!
A json_encode UTF-8 kódolású szövegeket vár.

Próbáld így:
while($r = mysql_fetch_assoc($sth)) { $r['megnevezes']=iconv('ISO-8859-1','UTF-8',$r['megnevezes']); $rows[] = $r; }
Vagy esetleg iconv helyett utf8_encode-t is megpróbálhatod, elvileg ugyanazt csinálja, mint az iconv a fenti paraméterekkel

json_encode nem generált egy warningot véletlenül?
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd