Modifications entre les versions 1 et 30 (s'étendant sur 29 versions)
Version 1 à la date du 2007-06-10 19:28:24
Taille: 1603
Commentaire: premier jet...
Version 30 à la date du 2021-03-23 00:17:35
Taille: 5337
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
<<TableOfContents()>>
Ligne 6: Ligne 8:
''...([:JeanChristopheAndré/ÀFaire:reste à écrire])...'' ''...([[JeanChristopheAndré/ÀFaire|reste à écrire]])...''
Ligne 14: Ligne 16:
<<Anchor(mysql)>>
Ligne 15: Ligne 18:
 * ajouter les lignes suivantes dans les sections précisées de `/etc/mysql/my.cnf` :
 {{{
 * créer le fichier `/etc/mysql/conf.d/local.cnf` suivant : {{{
[client]
# l'option suivante semble gêner quelques outils, comme mysqlbinlog
#default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
Ligne 18: Ligne 27:
# on ne négocie pas : on impose Unicode
character-set-client-handshake = FALSE
Ligne 19: Ligne 31:
character-set-server = utf8mb4

# à exécuter pour tous les clients (indispensable pour PHP 4, au moins)
init-connect = 'SET NAMES utf8mb4'

# Corrige le tri des textes avec des accents
collation-server = utf8mb4_general_ci

##### avant Debian Wheezy :
# language = /usr/share/mysql/french
##### depuis Debian Wheezy :
lc-messages = fr_FR

bind-address = 127.0.0.1
#bind-address = 0.0.0.0

# Les logs
# ATTENTION : Be aware that this log type is a performance killer.
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1

##### avant Debian Wheezy :
# log_slow_queries = /var/log/mysql/mysql-slow.log
# log_bin = /var/log/mysql/mysql-bin.log
##### depuis Debian Wheezy :
slow-query-log = TRUE
slow_query_log_file = /var/log/mysql/mysql-slow.log
log_queries_not_using_indexes

max_connections = 500

[mysqldump]
# est-ce vraiment utile ? *** À TESTER ***
Ligne 20: Ligne 65:
# à exécuter pour tous les clients (indispensable pour PHP !)
init-connect = 'SET NAMES utf8'
Ligne 27: Ligne 70:
[mysqldump]
# est-ce vraiment utile ? *** À TESTER ***
default-character-set = utf8
Ligne 32: Ligne 72:
 * relancer ensuite le service MySQL avec : {{{
$ sudo invoke-rc.d mysql restart
}}}

<<Anchor(mariadb)>>
=== MariaDB ≥ 10 ===
 * MariaDB arrive dans [[Debian/Stretch|Debian 9]] avec le support Unicode bien configuré par défaut (encodage & tri)
 * si on devait encore ajuster des choses, cela devrait se faire dans `/etc/mysql/mariadb.conf.d/90-local.cnf`, par exemple : {{{
# Fichier /etc/mysql/mariadb.conf.d/90-local.cnf

[mysqld]
#bind-address = 0.0.0.0
max_connections = 500

# Enable the slow query log to see queries with especially long duration
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 10
log_slow_rate_limit = 1000
log_slow_verbosity = query_plan
log-queries-not-using-indexes
}}}

<<Anchor(apache)>>
Ligne 33: Ligne 97:
 * activer le module MIME si ce n'est déjà fait :
{{{
 * activer le module MIME si ce n'est déjà fait : {{{
Ligne 37: Ligne 100:
 * directive globale à ajouter, par exemple, dans `/etc/apache2/conf.d/charset` :
{{{

* directive globale à ajouter dans `/etc/apache2/conf.d/charset` : {{{
Ligne 42: Ligne 105:
 * vérifier que vous avez cette option (au moins) dans `/etc/apache2/mods-available/autoindex.conf`, sinon l'y ajouter : {{{
IndexOptions Charset=UTF-8
}}}

 * vérifier la configuration puis relancer le service Apache avec : {{{
$ sudo apache2ctl configtest
$ sudo apache2ctl graceful
}}}

<<Anchor(python)>>
=== Python ===
 * directive locale à ajouter au début de chaque fichier : {{{#!python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
}}}

 * [[http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#if-you-get-a-unicodeencodeerror|le support des noms de fichiers avec caractères non-ASCII]] :
  * avec [[Debian/Lenny]], ajouter la ligne suivante dans `/etc/apache2/envvars` : {{{
export LC_ALL='fr_FR.UTF-8'
}}}
  * avec [[Debian/Squeeze]], dé-commenter la ligne suivante dans `/etc/apache2/envvars` : {{{
. /etc/default/locale
}}}

<<Anchor(php)>>
Ligne 43: Ligne 131:
 * directive globale à ajouter dans `/etc/php4/apache2/php.ini` :
{{{
 * (PHP4 uniquement) directive globale à ajouter dans `/etc/php4/apache2/php.ini` : {{{
Ligne 47: Ligne 134:
 * on a parfois besoin de ne l'activer que pour une seule arborescence, par exemple le temps d'une migration, auquel cas on utilisera une configuration Apache de ce genre : {{{
<Location /branche-latin1/>
  AddDefaultCharset iso-8859-1
  php_value default_charset 'iso-8859-1'
</Location>
<Location /branche-unicode/>
  AddDefaultCharset utf-8
  php_value default_charset 'utf-8'
</Location>
}}}

 * vérifier la configuration puis relancer le service Apache avec : {{{
$ sudo apache2ctl configtest
$ sudo apache2ctl graceful
}}}

<<Anchor(smokeping)>>
=== SmokePing ===
 * directive globale à ajouter dans la section `*** Presentation ***` : {{{
template = /etc/smokeping/basepage.html
charset = utf-8
}}}

<<Anchor(ocs)>>
=== OCS-Inventory ===
 * convertir le fichier de traduction en français de `ISO-8859-1` vers `UTF-8` : {{{
mv languages/french.txt languages/french.txt.orig
iconv --from=ISO-8859-1 --to=UTF-8 languages/french.txt.orig > languages/french.txt
sed -i '/^0 /s/iso-8859-1/utf-8/' languages/french.txt
}}}

Ce document présente les configurations à effectuer pour être compatible avec Unicode.

/!\ Attention : passer à Unicode ne se fait pas sur un coup de tête ! Il y a des implications à presque tous les niveaux et une mauvaise mise en place entraînerait au mieux des accents mal affichés et au pire des corruptions de données (typiquement suite à des mixages d'encodages) !

Stratégie

...(reste à écrire)...

Configuration

/!\ Attention : l'ordre est important. En particulier : il faut installer les locales avant tout.

Environnement système

  • installer le paquet locales et choisir une locales UTF-8 par défaut (typiquement fr_FR.UTF-8).

MySQL ≥ 5.0

  • créer le fichier /etc/mysql/conf.d/local.cnf suivant :

    [client]
    # l'option suivante semble gêner quelques outils, comme mysqlbinlog
    #default-character-set = utf8mb4
    
    [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    # on ne négocie pas : on impose Unicode
    character-set-client-handshake = FALSE
    
    # par défaut du côté serveur
    character-set-server = utf8mb4
    
    # à exécuter pour tous les clients (indispensable pour PHP 4, au moins)
    init-connect = 'SET NAMES utf8mb4'
    
    # Corrige le tri des textes avec des accents
    collation-server = utf8mb4_general_ci
    
    ##### avant Debian Wheezy :
    # language = /usr/share/mysql/french
    ##### depuis Debian Wheezy :
    lc-messages = fr_FR
    
    bind-address = 127.0.0.1
    #bind-address = 0.0.0.0
    
    # Les logs
    # ATTENTION : Be aware that this log type is a performance killer.
    #general_log_file        = /var/log/mysql/mysql.log
    #general_log             = 1
    
    ##### avant Debian Wheezy :
    # log_slow_queries = /var/log/mysql/mysql-slow.log
    # log_bin = /var/log/mysql/mysql-bin.log
    ##### depuis Debian Wheezy :
    slow-query-log = TRUE
    slow_query_log_file = /var/log/mysql/mysql-slow.log
    log_queries_not_using_indexes
    
    max_connections = 500
    
    [mysqldump]
    # est-ce vraiment utile ? *** À TESTER ***
    default-character-set = utf8
    
    [mysql]
    # par défaut du côté client (pour root, qui ne subit pas le init-connect)
    default-character-set = utf8
  • relancer ensuite le service MySQL avec :

    $ sudo invoke-rc.d mysql restart

MariaDB ≥ 10

  • MariaDB arrive dans Debian 9 avec le support Unicode bien configuré par défaut (encodage & tri)

  • si on devait encore ajuster des choses, cela devrait se faire dans /etc/mysql/mariadb.conf.d/90-local.cnf, par exemple :

    # Fichier /etc/mysql/mariadb.conf.d/90-local.cnf
    
    [mysqld]
    #bind-address = 0.0.0.0
    max_connections = 500
    
    # Enable the slow query log to see queries with especially long duration
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/mariadb-slow.log
    long_query_time = 10
    log_slow_rate_limit = 1000
    log_slow_verbosity = query_plan
    log-queries-not-using-indexes

Apache ≥ 2.0

  • activer le module MIME si ce n'est déjà fait :

    sudo a2enmod mime
  • directive globale à ajouter dans /etc/apache2/conf.d/charset :

    AddDefaultCharset UTF-8
  • vérifier que vous avez cette option (au moins) dans /etc/apache2/mods-available/autoindex.conf, sinon l'y ajouter :

    IndexOptions Charset=UTF-8
  • vérifier la configuration puis relancer le service Apache avec :

    $ sudo apache2ctl configtest
    $ sudo apache2ctl graceful

Python

  • directive locale à ajouter au début de chaque fichier :

       1 #!/usr/bin/env python
       2 # -*- coding: utf-8 -*-
    
  • le support des noms de fichiers avec caractères non-ASCII :

    • avec Debian/Lenny, ajouter la ligne suivante dans /etc/apache2/envvars :

      export LC_ALL='fr_FR.UTF-8'
    • avec Debian/Squeeze, dé-commenter la ligne suivante dans /etc/apache2/envvars :

      . /etc/default/locale

PHP

  • (PHP4 uniquement) directive globale à ajouter dans /etc/php4/apache2/php.ini :

    default_charset = "utf-8"
  • on a parfois besoin de ne l'activer que pour une seule arborescence, par exemple le temps d'une migration, auquel cas on utilisera une configuration Apache de ce genre :

    <Location /branche-latin1/>
      AddDefaultCharset iso-8859-1
      php_value default_charset 'iso-8859-1'
    </Location>
    <Location /branche-unicode/>
      AddDefaultCharset utf-8
      php_value default_charset 'utf-8'
    </Location>
  • vérifier la configuration puis relancer le service Apache avec :

    $ sudo apache2ctl configtest
    $ sudo apache2ctl graceful

SmokePing

  • directive globale à ajouter dans la section *** Presentation *** :

    template = /etc/smokeping/basepage.html
    charset = utf-8

OCS-Inventory

  • convertir le fichier de traduction en français de ISO-8859-1 vers UTF-8 :

    mv languages/french.txt languages/french.txt.orig
    iconv --from=ISO-8859-1 --to=UTF-8 languages/french.txt.orig > languages/french.txt
    sed -i '/^0 /s/iso-8859-1/utf-8/' languages/french.txt

Etude/Unicode (dernière édition le 2021-03-23 05:33:53 par JeanChristopheAndré)