[C++] Konwersja ISO 8859-2 na Windows-1252

0

Witam,
piszę małą aplikację w C++. Jedną z opcji aplikacji jest konwersja kodowania pliku:

  1. Windows-1252 -> ISO 8859-2
  2. ISO 8859-2 -> Windows-1252
    W jaki sposób zrobić to najlepiej ? Może spotkaliście się z podobnym zadaniem w praktyce.

Pozdrawiam

0

Najprościej tablica indeksowana charów zawierająca wartości drugiego kodowania indeksowana wartościami pierwszego kodowania. Czyli:

char isoToWin[256] = { ... };
char win = isoToWin[iso];

ew. mapa wartości o róznych kodach, jeżeli elementu nie ma to pozostaje bez zmian, jak jest to zamiana. Czytanie pliku oczywiście bajt po bajcie albo całościowo. Sensowne systemy oferacyjne buforują więc wyjdzie na to samo wyjdzie a odczyt po bajcie będzie wygodniejszy.

W życiu tyle alkoholu w tak krótkim czasie nie wypiłem więc przydałaby się opinia Ranidesa, quetralcoatla, flabry lub innego adf'a. Formalnie to i tak za mało żeby się upić ale sam sobie nie ufam.

Podsumowując - jeżeli ufasz lekko podpitemu, nienormalnemu moderatorowi to użyj tablic do translacji tablic kodowania docelowego indeksowanych kodowaniem źródłowym.

Dopiję resztę, ew. poprawię literówki i wracam do kodzenia w czymś bardziej abstrakcyjnym niż najbardziej absurdalny moloch wśród języków programowania... Common Lisp jest seksowny.

0

Pod Windows'em możesz użyć funkcji MultiByteToWideChar + WideCharToMultiByte. Ale jeśli tylko te 2 kodowania cię interesują, to tabelka będzie lepsza.

0

Dzięki za rady. Również myślałem o tablicach jako najprostszym sposobie.
Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1