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 robejcować ł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
Brak komentarzy:
Prześlij komentarz