![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 15:35 |