ANSI na UTF-8 w Notepad ++

25

Mam tekst zakodowany w ANSI:

Plik tekstowy ANSI

Kiedy próbowałem przekonwertować go na UTF-8 (używając menu Notepad ++ Kodowanie> UTF-8), dostaję dziwne znaki:

Plik tekstowy UTF-8

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?

użytkownik3658425
źródło
Nie widzę, co jest dziwnego na tym drugim zdjęciu
phuclv
Miałem na myśli postacie, których nie można wyświetlić. Jakiś sposób, aby tego uniknąć?
user3658425
Czy edytowałeś pytanie? Myślę, że widzę odwrócone obrazy
phuclv
1
Tak, przepraszam, wcisnąłem ostatnią edycję zaraz po tym, jak ktoś dodał zdjęcia, a następnie usuwam dodatek: jeśli możesz je dodać z powrotem, byłoby świetnie!
user3658425

Odpowiedzi:

38

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 encodeelementy 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ściowe

kodowanie notatnika

Pomieszał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

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode
phuclv
źródło
Dzięki, przepraszam za zepsucie zestawu znaków z kodowaniem. Czy jest jakiś sposób, aby uniknąć posiadania tych znaków, których nie można wyświetlić, i zamiast tego wyświetlać niektóre cytaty?
user3658425
@ user3658425 proszę zobaczyć moją edycję
phuclv
1
Edytowałem również powyższe informacje ANSI / ASCII
phuclv
3
Zauważ, że ogólnie „UTF-8 bez znaku kolejności bajtów” jest tym, czego chcesz. Jak wielu innych powiedziało w przeszłości, „UTF-8 jest jedynym przydatnym kodowaniem napisów”.
Riking
4
@WillihamTotland utf8everywhere.org
phuclv