Notepad ++ non funziona come previsto


1

Sto usando Notepad ++ per modificare i miei script PHP. Tuttavia ho trovato uno strano problema: quando si cambia la codifica da ANSI a UTF-8 (without BOM), salvando, chiudendo, ricaricando - quindi controllando la codifica: è ancora ANSI.

Qualche idea, cosa c'è che non va? Ha sempre funzionato per me in passato. Grazie.


Se modifichi la codifica, apporta delle modifiche prima di salvare, questo fa la differenza?
Vince Bowdren

Risposte:


7

Questo è un comportamento previsto.

Può succedere che un file venga salvato con una certa codifica, ma riaprendolo in Notepad ++ viene rilevato con un'altra codifica. Questa è una limitazione tecnica e si verifica perché a volte il file risultante non sarà diverso anche se vengono utilizzate codifiche diverse. Ciò è più evidente se il file viene salvato senza una BOM speciale (Byte Order Mark) che indica la codifica utilizzata.

ANSI e UTF-8 condividono i loro primi 128 caratteri (ASCII), rendendoli indistinguibili se questi sono tutti quelli che usi. Con un semplice file di testo, non ci sono metadati che indicano la codifica, quindi tutto il Notepad ++ (e altri editor) può fare è guardare i caratteri / dati nel file e fare una congettura.

  • Se il file ha una distinta base, NP ++ lo rileva e conosce la codifica.
  • Se il file è HTML o XML, la codifica viene letta dalla prima riga del file.
  • In caso contrario, NP ++ richiede un'ipotesi tra UCS-2LE, UCS2-BE e ANSI. Non è possibile fare la differenza tra un file codificato in UTF-8 senza BOM e un file in ANSI con molti caratteri ASCII alti.

http://sourceforge.net/projects/notepad-plus/forums/forum/331754/topic/3822723


In teoria, La risposta di PRacicot dovrebbe aprire tutti i file ANSI / UTF-8 (senza una distinta base) come UTF-8. Questo è anche raccomandato in una risposta a una domanda simile di Stack Overflow . Se questo non funziona per te, non sono sicuro di cosa si possa fare. La codifica è indicata come ANSI as UTF-8 nella barra di stato, per me.


Mi chiedo perché il BOM non sia raccomandato, quando sembra che usare UTF8 sia altamente fastidioso e facilmente soggetto ad errori senza di esso.
Jonathon

1
@ JonathonWisnoski Credo che sia perché l'uso di una BOM può rompere la compatibilità con i programmi legacy (e altri) in attesa di ASCII. In particolare, molti parser di script (possibilmente incluso PHP) e lo shebang su alcuni sistemi POSIX avrebbero fatto il trip.
Bob

ANSI e UTF-8 sono non più o meno lo stesso - a parte il sottoinsieme ASCII, sono completamente diversi. Provare a leggere un file UTF-8 (con caratteri non ASCII) come ANSI si tradurrà in garbage, provare a leggere un file ANSI (con caratteri non ASCII) come UTF-8 causerà molto probabilmente errori di decodifica (ma può anche risultato in spazzatura in alcuni casi).
oefe

@oefe Modificato ANSI = & Gt; ASCII.
Bob

tanto meglio!
oefe

5

Potresti voler cambiare questa impostazione nella tua preferenza notepad ++.

Vai nel menu Impostazioni - & gt; Preferenza - & gt; Nuovo documento / Directory predefinita. Nella sezione succhiare Codifica, selezionare UTF-8 senza BOM e selezionare Applica ai file ANSI aperti.

Selezionando Applica su file ANSI aperti, questa preferenza si applicherà anche ai documenti aperti correnti nel blocco note ++.

Dato che non ho ancora abbastanza punti per postare l'immagine qui c'è un link a postimage dove ho caricato l'immagine: http://postimage.org/image/4qza0bkv9/

Buona fortuna e buona programmazione.


grazie già, ma non ha aiutato :(
Fuxi

2

Devi Convert to ... invece di cambiare il Encode to ... opzione.
Potresti anche voler cambiare questa opzione nelle impostazioni, in modo che tutti i tuoi nuovi file vengano creati con la tua scelta di codifica.

imuge


grazie per il tuo commento, già fatto ma non ha aiutato. quando selezioni "converti in ..", salvando, ricaricando - è ancora ANSI. Ho anche provato a creare un nuovo file e incollare.
Fuxi
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.