Wykrycie kodowania znaków w pliku tekstowym

0

Męczę się z tym już jakiś czas, przekopałem sporo stron, testowałem różny kod i nigdy nie działało mi to w 100% tak jak powinno. Czy znacie jakiś sposób na wykrycie kodowania w pliku? A może używacie jakieś biblioteki do tego tupu rzeczy? Jest to problem z którym na pewno nie jeden z was się już zmierzył i cześć na pewno go przezwyciężyła dlatego liczę na jakąś pomoc.

0

Biorąc pod uwagę wszystkie możliwe kodowania: nie da się. Możesz spróbować minimum, czyli różne rodzaje Unikodu (16/32 po BOMach, jak nie to po zerach, UTF-8 po prostu sprawdzasz, czy się parsuje), plus resztę, z możliwością wyboru kodowania przez użytkownika. Dodatkowo można by ewentualnie dodać jakieś probabilistyczne metody do oceny, które kodowanie najlepiej opisuje dany plik (frekwencje liter itd.), ale może to pójść źle: .

0

Hmm to może powiem dokładniej, tworzę (jak pewnie nie jeden z nas) edytor stron www a więc potrzebuje kodowań ANSI, iso 8859-2, UTF 8 i UTF 8 (bez BOM) z zapisem sobie poradziłem tzn mam problem jeszcze z UTF 8 (bez BOM) ale to powinienem w końcu sam dojść do tego czemu tak się dzieje. Dlatego tez wypadało by aby przy wczytywaniu pliku było wiadome jakie jest kodowanie. Próbowałem m.in brania pierwszych bitów lub

	StreamReader^ File = gcnew StreamReader("link");
	Encoding^ = File->CurrentEncoding;

ale zawodziły. Zastanawiam się nawet nad przekopaniem kodu notepada++ lub firefoxa i wrzucenie tej klasy do dll`ki ale nie wiem czy jest w tym sens bo może się okazać że ten kod jest taki, że nie da się go tak po prostu przekopiować.

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