Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z polskimi znakami i json_encode
Forum PHP.pl > Forum > Przedszkole
miras
Witam, mam taki kod:

  1.  
  2. if (mysql_num_rows($kat))
  3. {
  4. while ($row = mysql_fetch_assoc($kat))
  5. {
  6. if (!empty($row['name'])) {
  7. $tt = iconv("ISO-8859-1","utf-8",$row['name']);
  8. $tab[] = array('id' => $row['id'], 'name' => $tt);
  9. }
  10. }
  11. }
  12. echo json_encode($tab);


problem polega na tym, że w całym projekcie mam ustawione kodowanie znaków na utf-8, a zamiast polskich znaków są krzaki.. kodowanie plików tez utf-8 bez boom
Przykład, co zwraca ten kod:

  1. [{"id":"1627","name":"Samochody"},{"id":"1440","name":"Sprz\u00eat warsztatowy"},{"id":"1441","name":" Maszyny budowlane"},{"id":"1442","name":" Maszyny rolnicze"},{"id":"1447","name":" Motocykle"},{"id":"1670","name":"Opony"},{"id":"1488","name":"Inne pojazdy"}]
  2.  
SmokAnalog
W PHP 5.4 wprowadzono flagę JSON_UNESCAPED_UNICODE dla json_encode:

  1. json_encode($tab, JSON_UNESCAPED_UNICODE);


Jeśli korzystasz ze starszej wersji PHP, to musisz poszukać alternatywy, tj. ręcznej zamiany kodu unicode na odpowiedni znak.
_Borys_
Jakie kodowanie wyświetli przy pobieraniu z bazy bez konwertowania
  1. if (!empty($row['name'])) {
  2. echo mb_detect_encoding($row['name'], "auto");
  3. }
miras
Cytat(_Borys_ @ 16.02.2014, 18:28:59 ) *
Jakie kodowanie wyświetli przy pobieraniu z bazy bez konwertowania
  1. if (!empty($row['name'])) {
  2. echo mb_detect_encoding($row['name'], "auto");
  3. }



to mi zwróciło:

  1. ASCII
  2. UTF-8
  3. ASCII
  4. ASCII
  5. ASCII
  6. ASCII
  7. ASCII
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.