Portál AbcLinuxu, 8. května 2025 20:03
Promene prostredi: GDM_LANG=en_US.UTF-8 LANG=cs_CS.UTF-8 LANGUAGE=cs_CS.UTF-8no nic proti ale nemelo by to byt spis cs_CZ.UTF-8
Kódování, ve kterém pracuje terminál:
set termencoding=iso-8859-2
Autodetekce, nejprve zkusí zdali to může být latin1, pak utf-16 a nakonec utf-8:
set fileencodings=latin1,utf-16,utf-8
Když selže předchozí "autodetekce", tak se použije toto kódování:
set encoding=iso-8859-2
Předchozí volby mám uvedené v konfiguračním souboru a následující volbu používám, když chci z
nějakého důvodu jiné kódování:
:set fileencoding=utf-8
Úpravami na serveru jsi soubor "naboural", tj. asi se Tvé úpravy uložily v jiném kódování. Takže řešení je otevřít ve Vimu a opravit tyto "novinky". Měli by být "zmršené" pouze nově přidané znaky s diakritikou. Nebo jsou KO i ty staré?
Napravit to určitě půjde. Stejným způsobem znič soubor s obsahem:
Příšerně žluťoučký kůň úpěl ďábelské ódy
PŘÍŠERNĚ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY
A pak pošli jeho šestnáctkový výpis:
hd file.php
Mrknu co se s tím vlastně stalo a skriptík s nahrazením by to měl opravit.
Na autodetekci kódování poslouží enca
.
$ enca latin2.txt
ISO 8859-2 standard; ISO Latin 2
$ enca utf8.txt
Universal transformation format 8 bits; UTF-8
$ enca cp1250.txt
MS-Windows code page 1250
LF line terminators
Ještě jsem chvíli hledal a konečně našel Yetiho řešení (funguje nejlépe):
function GetEncoding(f)
let e = system('enca -Pe "' . a:f . '"')
let e = substitute(e, '/.*', '', '')
if e =~ 'unknown'
return 'ascii'
endif
return e
endfunc
au BufReadPre * exec "set fencs=" . GetEncoding(expand('<afile>'))
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.