Hoe verander ik permanent de codering van een tekstbestand?

Ik heb een aantal html-bestanden gecodeerd als iso-8859-1-unix en een paar gecodeerd in utf-8-unix. Wat ik wil is om ze allemaal te coderen in utf-8-unix. Ik heb het al geprobeerd (ik denk dat ze feitelijk hetzelfde commando zijn):

C-x C-m f utf-8-unix
C-x RET f utf-8-unix

de modeline verandert van 1 naar U, maar nadat ik het bestand heb gesloten en opnieuw heb geopend, toont de modeline opnieuw 1. Het lijkt erop dat ik de verandering niet permanent kan maken, ongeacht wat ik probeer en ik begrijp niet waarom.

Volgend op de onderstaande suggesties, heb ik een nieuw bestand met deze inhoud gemaakt


C-h v buffer-file-coding-system returns this:

Its value is utf-8-unix
Local in buffer new.htm; global value is the same.

dus het ziet er goed uit. Ik bewaar, kill de buffer, heropen het bestand en C-h v buffer-bestand-codering-systeem geeft dit als resultaat:

Its value is undecided-unix
Local in buffer new.htm; global value is utf-8-unix

Ik ben echt in de war.

EDIT: bedankt iedereen voor het helpen om dit duidelijk te maken!

5
Sla je het bestand op nadat je de codering hebt gewijzigd?
toegevoegd de auteur Louis Salin, de bron
De standaardmanier om de codering permanent in te stellen is door voeg het toe als lokale bestandsvariabele : Mx add-file-local-variable RET-codering RET utf-8 RET , opslaan en klaar. Maar we moeten de inhoud van het bestand kennen om te begrijpen waarom Emacs het blijft openen met iso-8859-1-codering.
toegevoegd de auteur Ryan Cox, de bron
C-h v codering RET u moet deze opdracht in die buffer uitvoeren. Misschien is er een speciaal karakter waardoor Emacs denken dat het bestand in een bepaalde codering zit. Of misschien heb je iets in je init-bestand.
toegevoegd de auteur Ryan Cox, de bron
Sorry, mijn fout, zie buffer-bestand-codering-systeem variabele
toegevoegd de auteur Ryan Cox, de bron
Het voorbeeld dat u in de vraag gaf, bevat alleen ASCII-tekens. Dus zijn UTF-8-codering en Latin-1-codering identiek. In het bijzonder is er geen manier voor emacs om de coderingen uit elkaar te halen als je het bestand opent. Hoe dan ook, als het <head> gedeelte van uw HTML-bestand <meta charset = 'utf-8'> bevat, zou de html-modus dat moeten gebruiken om de codering te bepalen wanneer je opent het bestand. In dit geval is het niet nodig lokale bestandsvariabelen te gebruiken.
toegevoegd de auteur AttackingHobo, de bron
Ja, dat is wat ik zeg.
toegevoegd de auteur AttackingHobo, de bron
De functie prefer-coding-system kan nuttig zijn, maar dit is een algemene voorkeur, niet bestandsspecifiek.
toegevoegd de auteur user1126070, de bron
@JordonBiondo ja dat ben ik.
toegevoegd de auteur Barnabas Nagy, de bron
@giordano Hoe controleer ik de huidige waarde van de lokale bestandsvariabele? de inhoud van het bestand is niets bijzonders, slechts enkele standaard html.
toegevoegd de auteur Barnabas Nagy, de bron
@giordano vreemd. als ik Ch v codering doe en druk op RET wordt ik gevraagd om een ​​aanvulling te selecteren uit: codeercategorie - * , coderingssysteem - * , etc .. maar het ziet er niet naar uit dat het gewoon coderen is
toegevoegd de auteur Barnabas Nagy, de bron
@ HaraldHanche-Olsen, ik begrijp het. Dus als het bestand alleen ASCII-tekens bevat, maakt het geen verschil of ik de codering heb ingesteld op latin-1, utf8 of onbeslist laat. wat ik in meta charset plaats zal de bestandscodering zijn?
toegevoegd de auteur Barnabas Nagy, de bron

Geen antwoorden

0