Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z ogonkami podczas kodowania JSON
foxbond
post 30.01.2013, 23:23:22
Post #1





Grupa: Zarejestrowani
Postów: 162
Pomógł: 12
Dołączył: 20.12.2009
Skąd: Siedlce

Ostrzeżenie: (0%)
-----


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

Ten post edytował foxbond 30.01.2013, 22:13:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
tolomei
post 31.01.2013, 00:03:19
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


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.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
foxbond
post 31.01.2013, 11:23:09
Post #3





Grupa: Zarejestrowani
Postów: 162
Pomógł: 12
Dołączył: 20.12.2009
Skąd: Siedlce

Ostrzeżenie: (0%)
-----


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().
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:07