Portál AbcLinuxu, 8. května 2025 20:03

Dotaz: UTF-8 kodovani Vimu

10.3.2007 22:58 karel maly | skóre: 14
UTF-8 kodovani Vimu
Přečteno: 563×
Odpovědět | Admin
Ahoj,

z kodovani zesilim.

Mam soubor, ktery je zrejme v UTF-8 kodovani (btw: mohu to nejak zjistit?).

System je UTF-8 based.

Terminal pouzivam rxvt s iso10646-1, takze UTF-8.

Promene prostredi:

GDM_LANG=en_US.UTF-8 LANG=cs_CS.UTF-8 LANGUAGE=cs_CS.UTF-8

Kdyz si soubor prohlednu catem, tak je to fpoho. Ceske znaky vidim spravne.

Ale kdyz si to prohlednu ve VIMu (verze 6.3), tak jsou spatne.

Zkousel sem davat do .vimrc:

set encoding=utf-8 set fileencodings=ucs-bom,utf-8,latin2

ale bez efektu.

Pozn: soubor se mi zobrazoval dobre. Ale zkopiroval sem ho na jeden server a pak zpet ke mne a nyni se zobrazuje spatne.

Z tohodle by fakt cloveku jeblo.

Otazka zni, jak soubor zobrazit spravne ve VIMu a nemuset porad resit takovehle p*coviny.

Diky.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

kozzi avatar 10.3.2007 23:27 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Promene prostredi:

GDM_LANG=en_US.UTF-8 LANG=cs_CS.UTF-8 LANGUAGE=cs_CS.UTF-8

no nic proti ale nemelo by to byt spis cs_CZ.UTF-8
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
10.3.2007 23:36 karel maly | skóre: 14
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Melo. Ale nema to na to vliv.
Fuky avatar 11.3.2007 01:32 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Odpovědět | | Sbalit | Link | Blokovat | Admin

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

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
11.3.2007 10:15 karel maly | skóre: 14
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Diky, jak sem psal vysse - tohle tam vsechno mam. Krome specifikace kodovani terminalu.

Ty UTF-8 soubory, co sem na serveru neupravoval, mne jdou otevrit bez problemu. Ale ty co sem tam upravil se otviraji zmrsene.

Enca na techto souborech ukazuje trochu jinou hlasku:

user$ enca -L czech sss.php Universal transformation format 8 bits; UTF-8 Surrounded by/intermixed with non-text data

Je tam od ostatnich souboru navic to "Surrounded by/intermixed with non-text data".

Jde to nejak overridnout?
Fuky avatar 11.3.2007 10:27 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu

Ú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é?

11.3.2007 13:28 karel maly | skóre: 14
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Jsou prave KO vsechny - tj. i ty stare.

iconv asi nepomuze, kdyz uz soubor v UTF-8 je.

Z tohodle fakt muze clovek zesilet:)

Myslite, ze to pujde napravit nejak?
Fuky avatar 11.3.2007 13:56 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu

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.

11.3.2007 16:05 JF
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Ve vimu staci ponechat nejaky znak ve spatnem kodovani a vysledek se nezobrazi spravne (vim se patrne neprepne do utf8 ?).

Prepnete si terminal do UTF8 a dejte less na Vas soubor. Patrne uvidite vsechno OK - az na par znaku, ktere se nezobrazi spravne (treba jako FF a pod). Ty zlikvidujte - treba ve vim - ulozte a otevrete znova. JF
11.3.2007 17:24 xxx
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Ono je docela mozne, ze je soubor „dvakrat“ prekodovan do utf-8. Zkus na to program enca, ten by mel rict, v jakem kodovani to je...
Fuky avatar 11.3.2007 17:37 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
11.3.2007 22:54 karel maly | skóre: 14
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Diky, opravdu stacilo znicit tech par "vadnych" znaku a pak uz to bylo OK.

Misto, aby se clovek soustredil na praci, tak musi porad resit tyhle kra*iny:)
Fuky avatar 11.3.2007 01:40 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše RE: Autodetekce kódování
Odpovědět | | Sbalit | Link | Blokovat | Admin

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

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
Fuky avatar 11.3.2007 02:03 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: UTF-8 kodovani Vimu
Odpovědět | | Sbalit | Link | Blokovat | Admin

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>'))

Enca
Tip enca + vim
Psalo se o tom i v diskuzi pod blogem

-- RÁMO: psí tábor , ETriatlon: Výuka plavání

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.