Zapis pliku w kodowaniu iso 8859-2

0

Ustalam kodowanie tak jak znalazłem że mam ustalić

Encoding::GetEncoding("iso-8859-2")

Tylko, że to nie to bo plik w hexedytorze wygląda prawie jak ansi z innym kodem kilku znaków natomiast takie same znaki zapisane w tym kodowaniu w notepadzie++ w poglądzie wyglądają zupełnie inaczej i plik dodatkowo zawiera BOM. Mogę się pobawić i każdy znak konwertować przed zapisem i przy wczytywaniu ale nie ma prostszego sposobu? dlaczego ta funkcja nie działa?

0

Pokaż cały kod.

Plik zapisany z kodowaniem iso-8859-2 nie ma prawa mieć BOM.

1

wygląda prawie jak ansi z innym kodem kilku znaków

czyli prawidłowo.

0

Nie zakodowałeś znaków w 32- lub 16-bitowym unikodzie, który jest zawsze używany w pamięci, na format iso latin 2 za pomocą metody Convert.
Obecność BOM na wyjściu też o tym świadczy.
Metodą getEncoding niczego nie ustalasz. Pobierasz tylko tablicę konwersji dla konkretnego formatu. Dopiero ten obiekt jest argumentem docelowym przy konwertowaniu stringa na bajty zapisywane do pliku.
Podobnie jest w drugą stronę, przy odczycie pliku - najpierw wczytujesz bajty, potem je konwertujesz na unikod. I takim kodowaniem posługujesz się w pamięci. Zawsze.
Jeżeli bez konwersji wczytasz znaki i spróbujesz je obrabiać, to będziesz musiał obrabiać z własną obsługą szczegółów kodowania i potem je zapisywać w dokładnie takiej postaci. Licz się jednak z tym, że większość metod operujących na znakach nie będzie działać lub wyprodukuje bzdury. Bo one działają na unikodzie.

0

Wychodzi na to, że tylko @Azarien umie czytać ze zrozumieniem. Tak, porównywałem to co wyszło kiedy plik został zapisany przez mój program (prawie jak ANSI) i to co wyszło spod Notepada ++ (plik z BOM i zupełnie innym kodem dla każdego znaku) Znając renomę Notepada byłem pewny, że to ja źle ustalam kodowanie przed zapisem

IO::File::WriteAllText("test.txt", "ąęśćabcdefghijklmn", Encoding::GetEncoding("iso-8859-2"))

Ale skoro mój program dobrze zapisuje no to problem z głowy. ;)

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