20160802.1810: Na itt a prealfa-verzió, használat:
$ head -n1 detencode.c
/* detencode.c; encoding=ISO-8859-2 */
$ gcc -o detencode \
-finput-charset=$(./detencode -d -default detect,getenv,ISO-8859-2 detencode.c) \
detencode.c
detencode detencode.c: ISO-8859-2 [from line 1]
$ ./detencode -d -d -default detect dettest.txt
UTF-8
detencode dettest.txt: UTF-8 [from=detect]
./detencode: stat of 'dettest.txt': n=104 n7=32 n8=72 utf8_ok=36 utf8_err=0
$ ./detencode -h
usage: ./detencode [options] - <filename>
options:
-h this help
-d increase debuglevel
-default <value>
character-set name or special value 'detect' or 'getenv'
'detect' means checking utf-8 validity (not very reliable)
'getenv' means trying LC_ALL, LC_CTYPE, LANG (in this order)
it can be a list, too, eg:
-default ISO-8859-1
-default detect,getenv,ISO-8859-2
A stdout-ra kerül a talált/felismert kódolás, a stderr-re pedig a hiba/debug.
- NevemTeve blogja
- A hozzászóláshoz be kell jelentkezni
- 917 megtekintés
Hozzászólások
cat $(which detencode)
#! /bin/sh
awk '/encoding="[^"]+"/ { match($0, /encoding="([^"]+)\"/, result); print result[1]; exit; } ' "$1"
És máris van :)
Az ilyen "tippeljünk, hogy UTF-8-e meg nézzünk locale-t" helyett mondjuk lehetne annyival kiegészíteni, hogy adhatsz neki egy formátum stringet/prefixet (fenti példában: -encoding) és azzal együtt írja ki, ha talált valamit, egyébként meg semmit nem ír - így automatikusan az adott szoftvernél, az adott rendszeren default-ra fallbackel.
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Igen, ilyesmi lesz, csak C-ben. Pythonisták ilyesmit javasolnak: https://www.python.org/dev/peps/pep-0263/
- A hozzászóláshoz be kell jelentkezni