Back to top

Autore Topic: Codifica caratteri su Linux Ubuntu  (Letto 16647 volte)

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Codifica caratteri su Linux Ubuntu
« il: 12 Set 2007, 04:05:53 »
Qualcuno di voi ha affrontato in modo scientifico il problema della codifica caratteri su Linux Ubuntu ed ha modo di scrivere una procedura da seguire per ovviare il problema.
Io ho provato a smanettare con i "locale" ma ci sono sempre delle incompatibilità e non capisco per quale motivo Apache non sia in grado di stabilire la codifica dei caratteri. Nei sourge delle pagine mancano sempre e lascia al brouser il piacere di scegliere quella che vuole o quella impostata di default.

Altra cosa. Se Joomla predilige la codifica UTF8, perché non installa il DB direttamente in quella codifica?

Vorrei cercare di arrivare a definire un metodo per risolvere questo problema magari scrivendo una guida di riferimento, ma non sono riuscito a venirne a capo.

Offline berta

  • Nuovo arrivato
  • *
  • Post: 23
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #1 il: 12 Set 2007, 09:32:31 »
mi puoi fare un esempio delle incompatibilità che riscontri ?

Dici che Joomla predilige la codifica utf-8, per quale motivo ? hai un riferimento da passarmi a riguardo ?

Offline dampyrD

  • Appassionato
  • ***
  • Post: 332
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #2 il: 12 Set 2007, 09:50:30 »
Qualcuno di voi ha affrontato in modo scientifico il problema della codifica caratteri su Linux Ubuntu ed ha modo di scrivere una procedura da seguire per ovviare il problema.
Io ho provato a smanettare con i "locale" ma ci sono sempre delle incompatibilità e non capisco per quale motivo Apache non sia in grado di stabilire la codifica dei caratteri. Nei sourge delle pagine mancano sempre e lascia al brouser il piacere di scegliere quella che vuole o quella impostata di default.

Altra cosa. Se Joomla predilige la codifica UTF8, perché non installa il DB direttamente in quella codifica?

Vorrei cercare di arrivare a definire un metodo per risolvere questo problema magari scrivendo una guida di riferimento, ma non sono riuscito a venirne a capo.

non dipende affatto da ubuntu.
Ubuntu 9.04 - Toshiba A100-149

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #3 il: 12 Set 2007, 12:14:22 »
non dipende affatto da ubuntu.
Non è che che dipende da ubuntu, ma dalla configurazione del server sì. Solo che non riesco a capire dove intervenire e con quale discrezione Apache prende i dati che gli servono. Nel mio caso non li trova, infatti non gli aggiunge la codifica.

Offline berta

  • Nuovo arrivato
  • *
  • Post: 23
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #4 il: 12 Set 2007, 12:20:52 »
se mi spieghi meglio qual'è il problema che riscontri provo a darti una mano..

Offline dampyrD

  • Appassionato
  • ***
  • Post: 332
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #5 il: 12 Set 2007, 12:22:48 »
intendi le lettere accentate e i caratteri speciali? se la risposta è si basta effettuare in cerca nel forum

Citazione
Il problema si risolve sostituendo

A)

DEFINE('_ISO','charset=iso-8859-1');
con
DEFINE('_ISO','charset=UTF-8');

nel file
httpdocs/language/italian.php

B)
$mosConfig_locale = 'it_IT'
con
$mosConfig_locale = 'it_IT.UTF8'

nel file
httpdocs/configuration.php

vi sono molti post che trattano questo problema.
Ubuntu 9.04 - Toshiba A100-149

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #6 il: 12 Set 2007, 12:29:06 »
mi puoi fare un esempio delle incompatibilità che riscontri ?

Dici che Joomla predilige la codifica utf-8, per quale motivo ? hai un riferimento da passarmi a riguardo ?

Dal pannello di controllo inserisci i testi con tutti i caratteri non ASCII a posto. Vai ad aprire la pagina dal browser e li trovi con punti di domanda ecc, non parliamo poi se fai una prova con browser diversi e SO diversi.
Questo dipende dal fatto che Apache non dichiara la codifica al visitatore e quando da client apri la pagina Firefox o chi per lui mette la codifica che ha di default.
Però oltre a questo problema c'è anche il fatto che il DB ha codifiche differenti di cui non riesco a comprenderne il significato, di conseguenza dovrebbe essere Apache a mettere a posto le cose ed uniformare il tutto secondo il tipo di codifica che hai dato di default. Non trovandola mischia tutto ed è un casino.
Solo che le informazioni su queste cose sono frammentarie, bisognerebbe cercare di raccoglierle.
Nello specifico ci si mette anche Joomla che questa cosa non la gestisce come dovrebbe, o meglio secondo me dovrebbe inserire i dati nel db tutti con la stessa codifica, cosa che non fa assolutamente. Inoltre la codifica UTF8 a Joomla piace di più nel senso che gli permette di non avere problemi con le varie lingue, ma poi ti crea il db in latin1 e le varie varianti.
Io vedo un gran pasticcio dal quale non riesco ad uscire.

Offline dampyrD

  • Appassionato
  • ***
  • Post: 332
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #7 il: 12 Set 2007, 12:35:01 »
mi puoi fare un esempio delle incompatibilità che riscontri ?

Dici che Joomla predilige la codifica utf-8, per quale motivo ? hai un riferimento da passarmi a riguardo ?

Dal pannello di controllo inserisci i testi con tutti i caratteri non ASCII a posto. Vai ad aprire la pagina dal browser e li trovi con punti di domanda ecc, non parliamo poi se fai una prova con browser diversi e SO diversi.
Questo dipende dal fatto che Apache non dichiara la codifica al visitatore e quando da client apri la pagina Firefox o chi per lui mette la codifica che ha di default.
Però oltre a questo problema c'è anche il fatto che il DB ha codifiche differenti di cui non riesco a comprenderne il significato, di conseguenza dovrebbe essere Apache a mettere a posto le cose ed uniformare il tutto secondo il tipo di codifica che hai dato di default. Non trovandola mischia tutto ed è un casino.
Solo che le informazioni su queste cose sono frammentarie, bisognerebbe cercare di raccoglierle.
Nello specifico ci si mette anche Joomla che questa cosa non la gestisce come dovrebbe, o meglio secondo me dovrebbe inserire i dati nel db tutti con la stessa codifica, cosa che non fa assolutamente. Inoltre la codifica UTF8 a Joomla piace di più nel senso che gli permette di non avere problemi con le varie lingue, ma poi ti crea il db in latin1 e le varie varianti.
Io vedo un gran pasticcio dal quale non riesco ad uscire.

segui quel ti ho scritto sopra....

Ubuntu 9.04 - Toshiba A100-149

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #8 il: 12 Set 2007, 12:37:39 »
… vi sono molti post che trattano questo problema.
Queste cose qui le ho provate tutte e il problema sembra in alcuni casi che si risolva, in realtà non si risolve niente ed il motivo l'ho spiegato nel post precedente. Se metti ad esempio it_IT.UTF8 va bene per la localizzazione della lingua in casi come il giorno della data ecc. ma poi se hai un'altra lingua nel sito è peggio che se la lasci vuota.
Inoltre come dicevo all'inizio nella source della pagina Apache non dichiara la codifica e questo lascia al browser l'interpretazione.
Io avevo un server con Fedora con una installazione standard, avevo fatto pochissime modifiche ai file di configurazione e di problemi del genere non ne ho mai avuti, c'erano su meno cose ma un po' di siti con Joomla sì e funzionava.

Offline dampyrD

  • Appassionato
  • ***
  • Post: 332
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #9 il: 12 Set 2007, 12:50:29 »
… vi sono molti post che trattano questo problema.
Queste cose qui le ho provate tutte e il problema sembra in alcuni casi che si risolva, in realtà non si risolve niente ed il motivo l'ho spiegato nel post precedente. Se metti ad esempio it_IT.UTF8 va bene per la localizzazione della lingua in casi come il giorno della data ecc. ma poi se hai un'altra lingua nel sito è peggio che se la lasci vuota.
Inoltre come dicevo all'inizio nella source della pagina Apache non dichiara la codifica e questo lascia al browser l'interpretazione.
Io avevo un server con Fedora con una installazione standard, avevo fatto pochissime modifiche ai file di configurazione e di problemi del genere non ne ho mai avuti, c'erano su meno cose ma un po' di siti con Joomla sì e funzionava.

mah ho settato il tutto come dai consigli del forum, uso ubuntu e non ho alcun problema, inoltre l'unica sbavatura era occorsa dopo un operazione da parte dell'hosting che prontamente a risistemato il tutto.

Dimenticavo ho joomfish per le lingue e non ho problemi nemmeno con quelle, ( la stessa cosa che fai per italian.php la devi fare per le altri lingue.... english.php lo dò per scontato )
Ubuntu 9.04 - Toshiba A100-149

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #10 il: 12 Set 2007, 15:15:18 »
mah ho settato il tutto come dai consigli del forum…

OK, ma il mio problema è a monte, come ti dicevo sul mio vecchio server funzionava discretamente tutto, quando sono passato ad Ubuntu sono iniziati questi problemi, ma se non hai configurato tu il server, non credo che puoi aiutarmi.

Offline dampyrD

  • Appassionato
  • ***
  • Post: 332
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #11 il: 12 Set 2007, 15:22:23 »
io ho il sito su un hosting, per l'esattezza joomlahost.it, quando facevo le prove in locale alcuni template aveva qualche problema, controlla la codifica del template....
Ubuntu 9.04 - Toshiba A100-149

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #12 il: 12 Set 2007, 16:07:55 »
io ho il sito su un hosting, per l'esattezza joomlahost.it, quando facevo le prove in locale alcuni template aveva qualche problema, controlla la codifica del template....
Joomlahost usa debian e non ubuntu, almeno da quello che so io.
Comunque ti ringrazio lo stesso per le risposte.

Offline dampyrD

  • Appassionato
  • ***
  • Post: 332
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #13 il: 12 Set 2007, 16:13:02 »
il problema secondo me non è il sistema operativo....anche perchè in locale io ho ubuntu  ;)
Ubuntu 9.04 - Toshiba A100-149

Offline berta

  • Nuovo arrivato
  • *
  • Post: 23
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #14 il: 12 Set 2007, 17:33:04 »
L'argomento è abbastanza vasto comunque ho letto che molti hanno problemi con la visualizzazione delle date per cui partirei da lì.

Per la formattazione delle date php si appoggia alla funzione di sistema strftime, il cui funzionamente è regolato dalle variabili d'ambiente LC_* (dando per scontato che si stia parlando di ambienti unix/linux)

Il segreto per formattare le date è impostare la variabile d'ambiente LC_TIME nel modo corretto.

Se avete accesso al sistema linux potete fare delle prove da riga di comando con il comando date:

$ date +%A
Wednesday

in questo caso il locale di default è quello statunitense, vediamo come ottenere il giorno della settimana in italiano:

$ LC_TIME=it_IT date +%A
mercoledì

(non preoccupatevi se vi appare un punto interrogativo al posto della lettera accentata, ci torneremo)

la data è apparsa in italiano, con relativa lettera accentata. Già questo è importante perchè significa che il sistema ha a bordo la localizzazione per l'italiano, se così non fosse occorre intervire sul sistema per installare i file mancanti.

Per le lettere accentate europee in genere i sistemi supportano 2 codifiche: utf8 o iso8851, nel esempio precedente non ho specificato una codifica particolare e quindi il sistema utilizza quella di default. Per sapere qual'è quella di default basti sapere che utf8 utilizza 2 byte per ciascuna lettera accentata mentre iso8851 usa 1 byte. Controlliamo l'output del comando precedente:

$ LC_TIME=it_IT date +%A |od -c
0000000   m   e   r   c   o   l   e   d 354  \n
0000012

la lettera accentata "ì" corrisponde ad un singolo byte con il valore ottale 354, quindi il mio sistema sta utilizzando una codifica iso8851 per il locale italiano di default.

Verifichiamo quali sono i locale italiani supportati dal mio sistema linux:

$ locale -a |grep it_IT
it_IT
it_IT@euro
it_IT.iso88591
it_IT.iso885915@euro
it_IT.utf8
it_IT.utf8@euro

questa verifica è molto importante perchè se nella configurazione di joomla indicate in $mosConfig_locale un locale non supportato dal sistema avrete problemi.

Ad esempio sul mio mac i nomi sono leggermente differenti:
$ locale -a|grep it_IT
it_IT
it_IT.ISO8859-1
it_IT.ISO8859-15
it_IT.UTF-8

l'indicazione del charset è case insensitive mentre non lo è l'indicazione della nazionalità e della lingua. Quindi ad esempio va bene sia se scriviamo it_IT.utf-8 che it_IT.UTF-8, ma non va bene scrivere IT_IT.UTF-8

In genere sui sistemi linux vengono accettati i nomi di charset sia con che senza il trattino (utf-8, utf8, iso88591, iso8859-1, iso-8859-1), ma per andare sul sicuro conviene rispettare l'indicazione ricevuta dal comando locale -a (dove sia possibile usarlo)

Ho detto poco fa che la codifica utf-8 utilizza 2 caratteri per le accentate, verifichiamo se è vero:

$ LC_TIME=it_IT.utf8 date +%A |od -c
0000000   m   e   r   c   o   l   e   d 303 254  \n
0000013

Qui la lettera accentata corrisponde ai due byte 303, 254

Fatta questa premessa, perchè le date vengono visualizzate correttamente dovete:

1) scegliere una codifica tra utf8 e iso8859, non importa quale scegliete purchè sia supportata dal sistema operativo (verificate con il comando locale -a)

2) fatta la scelta e verificato che il sistema la supporti, indicare tale scelta nel file di configurazione di joomla:
$mosConfig_locale = 'it_IT.utf8'

Naturalmente è necessario che la stessa codifica venga utilizzata da joomla per la generazione dei contenuti, quindi indicatela nel file language/italian.php:
DEFINE('_ISO','charset=utf8');

Poi ci sarebbe da parlare di windows, di mysql, etc etc ma per adesso mi fermo qui..

« Ultima modifica: 12 Set 2007, 18:13:20 da berta »

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #15 il: 12 Set 2007, 18:05:56 »
Grazie mille per la risposta. Finalmente inizio ad inquadrare il problema. Magari alla fine riusciamo a fare una mini guida per installare e verificare che il lato server sia a posto, relativamente al SO, Apache, mySQL e PHP

L'interrogazione del server mi ha dato queste risposte:

# date +%W
37

# LC_TIME=it_IT date +%W
37

# LC_TIME=it_IT date +%W |od -c
0000000   3   7  \n
0000003

# locale -a |grep it_IT
it_IT.utf8

# LC_TIME=it_IT.utf8 date +%A |od -c
0000000   m   e   r   c   o   l   e   d 303 254  \n
0000013

Offline berta

  • Nuovo arrivato
  • *
  • Post: 23
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #16 il: 12 Set 2007, 18:12:32 »
piterdan,

scusa, troppi caffè anche oggi.. il comando è:

$ date +%A

correggo il post..

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #17 il: 12 Set 2007, 20:52:31 »
Ricapitolando questa è l'interrogazione del server adesso:

# date +%A
mercoledì

# LC_TIME=it_IT date +%A
Wednesday

LC_TIME=it_IT date +%A |od -c
0000000   W   e   d   n   e   s   d   a   y  \n
0000012

# locale -a |grep it_IT
it_IT.utf8

# LC_TIME=it_IT.utf8 date +%A |od -c
0000000   m   e   r   c   o   l   e   d 303 254  \n
0000013

Ho anche provato ad inserire nel file
/etc/locale.gen

it_IT@euro ISO-8859-15
it_IT@euro ISO-8859-1

e dato il comando
dpkg-reconfigure locales

Ma nell'elenco dei locale it non li visualizzo.

Offline berta

  • Nuovo arrivato
  • *
  • Post: 23
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #18 il: 12 Set 2007, 21:43:54 »
il tuo server dispone unicamente della codifica utf-8 per la localizzazione italiana.

Non che sia un problema, a patto che configuri joomla di conseguenza.

Da notare che questo riguarda unicamente la visualizzazione delle date.

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #19 il: 13 Set 2007, 00:10:03 »
Ma c'è un modo per installare le altre codifiche?
Da quello che ho letto Ubuntu, a differenza di Debian, installa solo le codifiche UTF8 delle varie lingue, questo lo abbiamo potuto verificare.
Inoltre gestisce in modo diverso anche la localizzazione demandando al tool grafico "selettore lingue" il compito, quindi le modifiche al file

/etc/locale.gen

non hanno effetto e non ho trovato da nessuna parte come fare per intevenire in altro modo, ad esempio su "selettore lingue".
« Ultima modifica: 13 Set 2007, 01:05:08 da piterdan »

Offline dampyrD

  • Appassionato
  • ***
  • Post: 332
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #20 il: 13 Set 2007, 09:26:14 »
Guarda se questo può esserti d'aiuto

http://forum.ubuntu-it.org/index.php?topic=85017.0
Ubuntu 9.04 - Toshiba A100-149

Offline piterdan

  • Appassionato
  • ***
  • Post: 238
  • Sesso: Maschio
    • Mostra profilo
Re: Codifica caratteri su Linux Ubuntu
« Risposta #21 il: 13 Set 2007, 22:39:28 »
Guarda se questo può esserti d'aiuto

http://forum.ubuntu-it.org/index.php?topic=85017.0
Sì, grazie, l'articolo è interessante ma ugualmente non si riesce a capire come fare ad aggiungere altre codifiche al locale di Ubuntu.
Quello che si evince, in ogni caso, è quanto dicevo all'inizio del post.
Essendoci all'interno di Joomla più di una codifica caratteri se dichiari UTF8, poi i caratteri 8851 con codifica da 129 a 255 vengono sballati e viceversa. Un caso fra tutti lo vedi nel pannello di controllo. La traduzione è fatta in iso8851, se dichiari UTF8 vedi ? ad ogni accentata e se non lo inserisci ci sono altri casini nella visualizzazione del sito.
Io non sono sicuro che aggiungendo altre codifiche in Ubuntu il problema si risolva ma mi piacerebbe riuscire almeno a farlo per provare.
Come ultima cosa mi piacerebbe anche che Joomla usasse la codifica UTF8 sempre, cosa che non fa e non ne capisco il senso, visto che attraverso questa codifica prenderebbe le lingue tutte insieme.

 



Web Design Bolzano Kreatif