Kodowanie w aplikacjach klienckich korzystających z internetu   Leave a comment

Kodowanie ma duże znaczenie ponieważ w systemie operacyjnym MS mamy konkretne kodowanie znaków diakrytycznych tzw. stronę kodową np. 1250 (polska) a w internecie przyjęto standard unicode. Sprawę pogarsza fakt, że na serwerach z którymi aplikacja może się komunikować jest też swój indywidualny system kodowania znaków. Mamy więc trzy miejsca w których znaki są transformowane:

  • lokalnie u klienta
  • w medium pośredniczącym czyli Internecie
  • zdalnie na serwerze (i dodatkowo jeszcze trzeba uwzględnić kodowanie w bazie)

Należy wybrać wspólną bazę. Moja propozycja w przypadku VFP jest taka:

  • Wysyłanie danych do serwera – lokalnie PRZED wysłaniem łańcucha znaków do serwera należy go przekodować z DBCS (natywne przedstawienie znaków diakrytycznych właściwe tylko w VFP) na UNICODE (korzystając z funkcji STRCONV z parametrem 5), następnie zakodować UNICODE do standardu przesyłania znaków w Internecie czyli UTF-8 (ta sama funkcja ale z kodem 10). Dalej należy zapakować to w kod base64 aby uniknąć przekłamań (jest to ważne w przypadku PHP). Tak przygotowana paczka trafia na serwer, w moim przypadku PHP na którym jest kodowanie iso-8859-2. Tutaj należy rozbejcować ładunek (base64_decode) i mamy już po stronie serwera dane w kodzie UTF-8. Teraz wystarczy je przesłać na stronę z charset=utf-8 i wszystko jest dobrze. Gdybyśmy chcieli zapisać te dane do bazy to musimy je przekodować do kodowania przyjętego  w bazie np. iso-8859-2, ale to można zrobić odpowiednimi skryptami już na serwerze.
  • Odbieranie znaków z serwera – tutaj działa wbudowana inteligencja VFP – sam się domyśla jakie jest kodowanie tego co przyszło. Należy jednak pamiętać, że tworząc np. skrypt w PHP w edytorze musimy zadbać aby on zapamiętał plik w kodzie jaki obowiązuje na serwerze

Posted 3 Listopad 2010 by marekwmsdn in Bez kategorii

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: