Pagina 1 di 1

column: read failed: Invalid or incomplete multibyte or wide

Inviato: lun 28 dic 2015, 19:20
da ZeroUno
Ho da poco cominciato ad usare il comando 'column' per formattare il testo.

Però sembra che gli dia fastidio quando si usano caratteri non utf-8, per esempio lettere accentate:

Codice: Seleziona tutto

# echo è|column
column: read failed: Invalid or incomplete multibyte or wide character
come si risolve?

[edit]

Codice: Seleziona tutto

# echo è|LC_CTYPE=it_IT column
risolve, ma io non so a priori in che lingua è scritto il testo.

Re: column: read failed: Invalid or incomplete multibyte or

Inviato: lun 28 dic 2015, 20:12
da brg
Perché non usare UTF-8, visto che è lo standard e funziona con ogni lingua conosciuta? Per quanto riguarda il problema, credo che l'unica soluzione possibile sarebbe quella di leggere il LANG di sistema o qualcosa del genere:

Codice: Seleziona tutto

# echo è | LC_CTYPE=$LANG column
Non è possible distinguere uno standard dall'altro guardando solo alla stringa.
Tuttavia a me funzionano comandi come:

Codice: Seleziona tutto

bash-4.2$ LC_CTYPE=it_IT echo è | column
è
bash-4.2$ LANG=it_IT echo è | column
è
bash-4.2$ LC_ALL=it_IT echo è | column
è
e non capisco che cosa ci sia di diverso con il tuo esempio, forse che la tua lingua di sistema non è UTF-8 ma il terminale virtuale sì?

Re: column: read failed: Invalid or incomplete multibyte or

Inviato: mar 29 dic 2015, 12:44
da conraid
ZeroUno ha scritto:Però sembra che gli dia fastidio quando si usano caratteri non utf-8, per esempio lettere accentate:
ma le lettere accentate sono caratteri utf8. Cosa intendi per non utf8?

Re: column: read failed: Invalid or incomplete multibyte or

Inviato: mar 29 dic 2015, 12:54
da ZeroUno
mi sono confuso.
Di default è settato a "C" che credo sia tipo ascii 7bit.
Visto che non so a priori la lingua e anzi all'interno del testo possono esserci più lingue (il testo di cui mi sono accorto era in francese), ho messo LC_CTYPE=en_US e funziona. Credo che funzioni qualunque si metta che non sia a 7 bit.
Lo script è pubblico e può girare sul computer di persone di tutto il mondo. Considera poi che (almeno a me) $LANG non è settato per default, e dove lo è spesso faccio unset LANG per assicurarmi che l'output dei comandi non esca in italiano facendo fallire le grep.

Re: column: read failed: Invalid or incomplete multibyte or

Inviato: mar 29 dic 2015, 13:07
da conraid
c'è anche LANG=C.utf8 che funziona.

[SOLVED] Re: column: read failed: Invalid or incomplete mult

Inviato: mar 29 dic 2015, 23:35
da ZeroUno
conraid ha scritto:c'è anche LANG=C.utf8 che funziona.
ecco, è quello che cercavo (non sono esperto di codifiche)