Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z json_encode() i kodowaniem znaków
blackstone
post 24.07.2017, 19:41:19
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


Zrobiłem sobie skrypt który przetwarza pola formularza w tablicę JSON. Problem w tym że wynik pracy funkcji json_encode() niszczy polskie znaki np w zamiast "ędward ącki " wpisuje mi " \u0118dward \u0104cki ". WYdaje mi sięże to problem z tą funkcja gdyż gdy wydrukowałem sobie tablicę post ( print_r($_POST) ) to w tej tablicy znaki są polskie i nie ma zadnego problemu a język mam nastawiony na polski a kodowanie na tuf8 na stronie czyli <html lang="pl-PL"> i
<head>
<meta charset="utf8" />
</head>

Proszę o sugestię i z góry dzięki za odpowiedź
Go to the top of the page
+Quote Post
trueblue
post 24.07.2017, 20:00:19
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A dlaczego twierdzisz, że niszczy? Próbowałeś odkodować taki ciąg znaków?


--------------------
Go to the top of the page
+Quote Post
blackstone
post 24.07.2017, 20:07:56
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


Próbowałęm funkcją utf8_encode('ciąg JSON z jscon_encode') ale nie było żadnej różnicy.
Go to the top of the page
+Quote Post
trueblue
post 24.07.2017, 20:13:22
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Na pewno nie encode i na pewno nie utf8_encode.
  1. print_r(json_decode('{"0":" \u0118dward \u0104cki "}'));



--------------------
Go to the top of the page
+Quote Post
blackstone
post 24.07.2017, 20:43:17
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


NIe wiem czy dobrze zrozumiemałem , ale............tutaj potrzebne jest uzyskanie danych w formacie >> JSON << ( które uwzględni polskie znaki ) a nie ponownie dekodowanie ich do formatu tablicy php. W tym jest problem.
Go to the top of the page
+Quote Post
trueblue
post 24.07.2017, 20:46:34
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


1. Do formatu tablicy ich nie zdekodujesz, bo nie kodowałeś tablicy.
2. Polskie znaki są poprawnie zakodowane.
3. Czytaj dokumentację.

Cytat
Note:
Like the reference JSON encoder, json_encode() will generate JSON that is a simple value (that is, neither an object nor an array) if given a string, integer, float or boolean as an input value.


--------------------
Go to the top of the page
+Quote Post
blackstone
post 25.07.2017, 09:52:18
Post #7





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


Możliwe że....rzeczywiście problemem nie jest więc json_encode. ALe od początku - owszem kodowałem tablicę. System działa tak że tablica post zawierająca pola z danymi jest zamieniana tablice JSON Tak wiem ,że tablica JSON jeśli nie zostanie zdekodowana przez PHP nie jest obsługiwana jako tablica ale nie o to chodzi , celem jest ciąg JSON tego typu { "pole1": "zawartość " , "pole2" :"zawartość" } . Te ciągi JSON następnie są zapisywane w bazie danych po to by sterować systemem strony. Póki co na razie głównym odbiorcą tego są skrypty php które.....te ciągi JSON z bazy odbierają > następnie dekodują przez json_decode() > następnie używają ( np do sterowania slaiderami ) i....tam gdzie powinny być polskie litery ich nie ma ( po zdekodowaniu przez json_decode() !). Na szczęście ten zapis jest manualny i mogę podmienić ręcznie wygenerowany kod JSON przed zapisem do bazy tak by był tam polskie litery i wtedy działa ok. Tylko to zabiera czas a chciałbym to zrobić z automatu. Najwyżej się przemęczę wypisze sobie przez JSON_encode wszystkie polskie litery i zrobię skrypt który je wstawi w odpowiednie miejsce ale....może można zrobic to prościej jakoś smile.gif
Go to the top of the page
+Quote Post
viking
post 25.07.2017, 09:54:45
Post #8





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


JSON jest zawsze stringiem a nie tablicą. Struktura http://json.org
Twoim problemem jest zapewne brak prawidłowego kodowania przy zapisie do bazy (SET NAMES).


--------------------
Go to the top of the page
+Quote Post
trueblue
post 25.07.2017, 09:55:21
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


W stringu, który podałeś są zakodowane polskie znaki. Fragment kodu PHP, który ja podałem, odkodowuje je poprawnie.


--------------------
Go to the top of the page
+Quote Post
Puszy
post 25.07.2017, 11:43:58
Post #10





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

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


http://forum.php.pl/index.php?s=&showt...t&p=1219555

Ten post edytował Puszy 25.07.2017, 11:44:36
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 - 00:35