Mam tekst zakodowany w ANSI:
Kiedy próbowałem przekonwertować go na UTF-8 (używając menu Notepad ++ Kodowanie> UTF-8), dostaję dziwne znaki:
Myślałem, że UTF-8 jest nadzbiorem ANSI i że później nie będę miał takich problemów. Czy w ogóle mogę uniknąć pojawienia się tych dziwnych postaci?
notepad++
character-encoding
utf-8
ansi
użytkownik3658425
źródło
źródło
Odpowiedzi:
UTF-8 nie jest zestawem znaków, tylko kodowaniem Unicode. Pierwsze 128 znaków jest takich samych jak ASCII, ale różnią się wysokimi 128 bajtami. Bajt z ustawionym wysokim bitem (lub> = 0x80) jest rozszerzonym znakiem w ASCII, podczas gdy w UTF-8 wskazuje bajt początkowy sekwencji wielobajtowej. Tak jest w przypadku 0x93 lub 0x94 powyżej. Jednak nie widzę nic dziwnego w pliku. Są to inteligentne cytaty lub cytaty z różnymi formami otwierania i zamykania cudzysłowów, które często widzisz, gdy używasz bogatego edytora tekstu, takiego jak MS Word
Edytować
Pytanie zostało zredagowane. Myślę, że to dlatego, że wybrałeś niewłaściwe narzędzie. Te
encode
elementy menu są do zmiany kodowania, jeśli masz źle znakowych wyświetlaczy. Po prostu traktuje tę samą sekwencję bajtów odczytaną z dysku jako inne kodowanie. Ponieważ ASCII i UTF-8 są różne, będziesz mieć zniekształconą sekwencję bajtów UTF-8 i zobaczysz wynik powyżej. Musisz wybraćconvert to UTF-8
, aby zmienić całe bajty wejściowePomieszałeś także ANSI i ASCII. ANSI często odnosi się do Windows-1252, który jest zestawem znaków używanym w angielskim systemie Windows i niektórych językach Europy Zachodniej. Jest to nadzbiór ISO 8859-1, chociaż ISO 8859-1 może być również określany jako ANSI. ISO 8859-1 to także pierwsze 256 punktów kodowych Unicode, więc jest to podzbiór Unicode, ale nie jest kompatybilny z kodowaniem UTF-8. ASCII jest 7-bitowym zestawem znaków i jest podzbiorem ANSI, który jest kodowany przez 8 bitów, ale czasami jest również określany jako ANSI, choć niezbyt poprawny
https://en.wikipedia.org/wiki/ANSI_character_set
Zasadniczo związek między zestawami znaków jest następujący
źródło