2010-10-08 20 views
1

Oui, je sais ce que vous en pensez, mais pour le moment nous avons décidé d'opter pour latin1.J'ai paramétré php-mysql-apache pour travailler sur latin1 mais quand je fais des sauvegardes, mon client de jeu de caractères est toujours utf8

Ceci est la configuration mySQL: • mysql> AFFICHER LES VARIABLES COMME 'character_set_%';
• + -------------------------- + -------- +
• | Nom de variable | Valeur |
• + -------------------------- + -------- +
• | character_set_client | latin1 |
• | character_set_connection | latin1 |
• | character_set_database | latin1 |
• | character_set_results | latin1 |
• | character_set_server | latin1 |
• | character_set_system | utf8 |> Ceci est impossible à changer puisqu'il s'agit d'un paramètre système par défaut.

Pour php, nous utilisons les commandes suivantes à php.ini:
mssql.charset = "ISO-8859-1"

Pour apache habituel:
AddDefaultCharset ISO-8859-1

Avec tout cela chaque fois que nous faisons la sauvegarde, nous avons ajouté ce qui suit à chaque table:
/*! 40101 SET @saved_cs_client = @@ character_set_client /;
/
! 40101 SET character_set_client = utf8 * /;

Pourquoi le character_set_client est-il toujours dans utf8 pour les connexions entre apache/php et mysql?

+1

Comment sauvegarder vos tables? –

+0

J'utilise mysqldump depuis la ligne de commande. Cela me donne un type de fichier .sql. Quand j'ouvre le fichier .sql je trouve le SET character_set_client = utf-8 sur chaque table comme décrit ci-dessus ... Très bizarre puisque tous les php, apache et mysql sont latin1/iso-8859-1 – Jorge

Répondre

3

mysqldump ne regarde pas vos paramètres PHP ou Apache. Vous devrez ajouter le drapeau --default-character-set lors de l'utilisation de mysqldump.

From the manual:

--default-character-set = charset_name

Utilisez charset_name comme le jeu de caractères par défaut . See Section 9.5, "Configuration du jeu de caractères". Si aucun jeu de caractères n'est spécifié, mysqldump utilise utf8, et les versions antérieures utilisent latin1.

+0

This.Comment PHP se connecte aux tables n'aura pas d'importance pour 'mysqldump ', qui est UTF-8 par défaut –

+0

Merci bradym, cela fait des sens puisque j'ai tout réglé sur Latin1. Je vais garder un oeil sur le manuel que vous avez lié. Merci! – Jorge

0

si vous remarquez attentivement la directive dans le php.ini que vous avez défini:

mssql.charset = "ISO-8859-1" 

fait référence à Microsoft SQL Server! connexions et non à MySQL Server.

jackman