Zamiana kodowania pliku tekstowego

0

Cześć, potrzebuję napisać program, który sprawdza kodowanie pliku tekstowego, a następnie zmienia kodowanie znaków w tym pliku na jakieś inne. Jakimi tematami powinienem się zainteresować?

1

Kiedyś pisałem coś takiego na zaliczenie, brałem pod uwagę znane kodowania, oraz często występujące wyrazy w języku polskim z kodowaniem oraz specyficzne końcówki. Więc statystyka liter + statystyka rozpoznanych wyrazów (np 'się', 'że', 'są') i końcówek ('ść', 'ści' 'ął')

0

Nie jest to zbyt ogólne rozwiązanie. Przynajmniej jeśli autor nie określił języka pliku, który otwiera (może być tam cyrylica czy tekst arabski) więc sprawdzanie "ści" nie jest najlepszym pomysłem. Polecałbym poszukać czegoś typu

Detect text file encoding
, sprawdzić kodowanie i przerobić każdy znak w tablicy (nie tylko polskie ogonki).

1

Nie jest to zbyt ogólne rozwiązanie.

Tak ogólnie to to jest niewykonalne zadanie, bo nie można ze 100% pewnością powiedzieć, czy piszący miał na myśli "Bush hid the facts" czy "畂桳栠摩琠敨映捡獴".

Kodowanie pliku można tylko lepiej albo gorzej zgadywać.

przerobić każdy znak w tablicy (nie tylko polskie ogonki).

Oczywiście.

0

Oczywiście chodzi tylko i wyłącznie o język polski, zapomniałem dopisać :)

Trochę doprecyzuje.

Przykładowo załòżmy, że plik tekstowy będzie miał kodowanie latin2, jak w praktyce wygłądałoby przekodowanie znaków tego pliku na utf-8?

1

Na przykład tak:

std::locale lc(std::locale(), new std::codecvt_utf8<wchar_t>);
	
std::wifstream ifs("d:\\in.txt");
std::wofstream ofs("d:\\out.txt");

ifs.imbue(std::locale(".852")); //<--- nie będzie działać na MinGW, użyj wtedy setlocale.
ofs.imbue(lc);

ofs << ifs.rdbuf();

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