Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Serializacja do WDDX danych w UTF-8
agmic
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.07.2003

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


Witam. Napotkałem następujacy problem:
Serializuje dane (pobierane z bazy MySQL) do pakietów WDDX przy pomocy funkcji wddx_serialize_value() lub np. wddx_add_vars().

Serializowane dane są zakodowane w UTF-8 i problem polega na tym ze po
serializacji dwa polskie znaki 'ą' i 'ć' są zastępowane znacznikami <char
code='FFFFFF85'/> <char code='FFFFFF87'/>, ktore raczej nie sa kodami tych znakow w UTF-8.
W wyniku tego po przeslaniu danych do klienta, dane sa niepoprawnie
wyswietlane (a konkretnie zle sa wyswietlane te dwa znaki).

Czy problem moze wynikac stad ze binaria php pod Windows moga miec niektore biblioteki skompilowane domyslnie np dla ISO-8859-1? Testowalem to w srodowisku Windows i nie sprawdzilem jeszcze jak dziala serializacja danych w unikodzie pod Linuxem.

Będę wdzięczny za wszelkie podpowiedzi
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
agmic
post
Post #2





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.07.2003

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


Problem w tym że korzystanie z iconv byoby o tyle utrudnione że w bazie będę miał dane zapisane w różnych językach - np. po rosyjsku, czesku, niemiecku itd... Odczytując dane z bazy nie wiem w jakim języku są one zapisane - muszę je bez żadnych zmian przekazać aplikacji "klienta" który oczekuje tych danych zapisanych w UTF-8.

Jeśli postapiłbym w taki sposób że:
po odczytaniu danych z bazy konwertuję je z UTF-8 na np. ISO-8859-2, następnie serializuję je do pakietów WDDX i otrzymany pakiet WDDX konwertuję na UTF-8 i wtedy dopiero wysyłam pakiet do klienta,
to straciłbym najprawdopodbniej różne znaki.

Problem powodowałoby m.in.to że serializer WDDX zamienia rózne znaki narodowe na znacznki <CHAR code='XXXXXXXX'/> i wtedy powtórna konwersja pakietu WDDX na UTF-8 za pomocą iconv nic nie da ponieważ te znaczniki nie zostaną zamienione na znak w UTF-8.

Jesli wiedziałbym że ograniczę się tylko do polskich znaków mógłbym sam zamieniać te znaczniki na znak za pomocą np. ereg_replace() ale wetdy nie mialoby sensu kodowanie danych w UTF.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 15:35