Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z ogonkami podczas kodowania JSON
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
foxbond
edytor (eclipse - PDT) zapisuje w UTF-8

w php:
  1. header('Content-type: application/json; charset=UTF-8');


w MySql wszystkie połączenia, baza danych, tabele i pola w tabelach utf8 (general ci)

na stronie:
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


w js:
Kod
$.ajax({
        type: "POST",
        url: "game.php",
        async: true,
        dataType: "json",
        contentType: "application/json; charset=UTF-8",
        data:"ajaxIdle=true",
        success: function(msg){
            /******/
        }
    });


W bazie mam "Róża",
var_dump tablicy w php zwraca "Róża",
var_dump wyniku z funkcji json_encode() zwraca null
wartość pola w js (po odebraniu) również jest null

(problem występuje tylko w polach które zawierają polskie znaki)

Ma ktoś pomysł jak temu zaradzić?

Myślałem, żeby nazwy zakodować w base64 przed "zJSONowaniem", a później po stroni klienta odkodować, ale jest to niezbyt eleganckie rozwiązanie. W dodatku nie eliminuje ono problemu, a jedynie go omija.


Z góry dziękuję za pomoc.

EDIT:
Kod
array(1) {
  ["area"]=>
  array(3) {
    ["objects"]=>
    array(2) {
      [0]=>
      array(8) {
        ["objectName"]=>
        string(4) "R�?a" //czasem jest "Róża" bądź "R�?a"
        /***********/
      }
      /*************/
    }
    /***********/
    ["mtime"]=>
    float(1359582523.4294)
  }
}
{"area":{"objects":[{"objectName":null}],"mtime":1359582523.4294}}


Wszelkie propozycje mile widziane, terminy mnie gonią tongue.gif
tolomei
Witaj.

Liczę, że googlowałeś po angielskojęzycznych stronach.
Może sprawdź czy przy kodowaniu masz jakieś błędy json_last_error().

Sprawdź na pewno czy pliki których używasz są kodowane w utf-8(czasem projekt ma tę opcję zaznaczoną, a pliki mają swoje, odmienne opcje).
Sprawdź na, którym etapie dokładnie tracisz swoje ogonki.

Ciężko powiedzieć co jest przyczyną. Zawsze przesyłałem ogonki i problemów nie miałem.

Daj znać.
Pozdrawiam.
foxbond
Funkcja zwraca wartość 5 czyli "JSON_ERROR_UTF8"

Okazuje się, że dane pobrane z bazy miały już "krzaczki".

Błąd mysql:
Kod
Unknown character set: 'UTF-8'


Trochę szukania i okazało się, że było trzeba kodowanie ustawić jako "utf8" a nie "UTF-8"

No cuż , dziękuję za pomoc, nie miałem pojęcia o istnieniu funkcji json_last_error().
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.