ANSI a UTF-8 in Notepad ++


25

Ho un testo codificato in ANSI:

File di testo ANSI

Quando ho provato a convertirlo in UTF-8 (usando il menu Notepad ++ Codifica> UTF-8), ho alcuni strani caratteri:

File di testo UTF-8

Ho pensato che UTF-8 fosse un superset di ANSI e che successivamente non avrei avuto tali problemi. Posso comunque evitare l'apparizione di quegli strani personaggi?


Non vedo cosa sia strano in quest'ultima immagine
phuclv,

Intendevo i personaggi non visualizzabili. Un modo per evitarlo?
user3658425

Hai modificato la domanda? Penso di vedere le immagini invertite
phuclv,

1
Sì, scusa, ho inserito l'ultima modifica subito dopo che qualcuno ha aggiunto le immagini, cancellando l'aggiunta: se riesci ad aggiungerle di nuovo sarebbe fantastico!
user3658425

Risposte:


38

UTF-8 non è un set di caratteri, solo una codifica per Unicode. I primi 128 caratteri sono gli stessi di ASCII ma differiscono nei 128 byte alti. Un byte con il bit alto impostato (o> = 0x80) è un carattere esteso in ASCII mentre in UTF-8 indica il byte iniziale di una sequenza multi-byte. Questo è il caso di 0x93 o 0x94 sopra. Tuttavia, non vedo nulla di strano nel file. Quelle sono virgolette intelligenti o virgolette con forme diverse per l'apertura e la chiusura di virgolette, che spesso vedi quando usi un editor di testi complessi come MS Word

modificare

La domanda è stata modificata. Penso che sia perché hai scelto lo strumento sbagliato. Le encodevoci di menu consentono di modificare la codifica se si visualizzano caratteri errati. Tratta solo la stessa sequenza di byte letta dal disco come un'altra codifica. Poiché ASCII e UTF-8 sono diversi, avrai una sequenza di byte UTF-8 non valida e vedrai il risultato sopra. È necessario scegliere convert to UTF-8che cambi l'intero byte di input

codifica del blocco note

Hai anche confuso ANSI e ASCII. ANSI si riferisce spesso a Windows-1252, che è un set di caratteri utilizzato in Windows inglese e in alcune lingue dell'Europa occidentale. È un superset di ISO 8859-1, sebbene ISO 8859-1 possa anche essere indicato come ANSI. ISO 8859-1 è anche i primi 256 punti di codice di Unicode, quindi è un sottoinsieme di Unicode, ma non è compatibile con la codifica UTF-8. ASCII è un set di caratteri a 7 bit ed è un sottoinsieme dell'ANSI che è codificato da 8 bit, ma a volte viene anche indicato come ANSI, anche se non molto corretto

https://en.wikipedia.org/wiki/ANSI_character_set

In generale, la relazione tra set di caratteri è la seguente

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode

Grazie, scusa per aver incasinato il set di caratteri con la codifica. C'è un modo per evitare di avere quei caratteri non visualizzabili e avere invece delle virgolette visualizzabili?
user3658425

@ user3658425 vedere la mia modifica
phuclv,

1
Ho anche modificato le informazioni ANSI / ASCII sopra
phuclv

3
Si noti che, in generale, "UTF-8 senza contrassegno di byte" è ciò che si desidera. Come molti altri hanno già detto in passato, "UTF-8 è l' unica utile codifica di stringa".
Riking

4
@WillihamTotland utf8everywhere.org
phuclv
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.