Convertir ses champs de tables de bases MySQL d'un charset/collation vers un autre charset/collation
Avec les fichiers suivants, vous pourrez faire cette migration de charset pour toutes ou seulement les bases spécifiées :
- mysql_latin1_swedish_ci_VERS_latin1_general_ci.php
- mysql_anyCharsetAndCollation_VERS_anyCharsetAndCollation.php
Il vous faudra toute fois un compte MySql possédant suffisamment de droit pour modifier la structure de vos tables avec la commande MySql ALTER.
/**
* Convertisseur de charset et collation pour Mysql
* Préciser l'accès à votre base avec un utilisateur administrateur ayant accès au modifications de structures
* Puis le charset et collation vous désirez utiliser pour toute les bases, tables et champs de votre serveur Mysql
*
* Auteur : http://dotclear.placeoweb.com
* Blog : http://dotclear.placeoweb.com/post/MySql-interclassement
*/
Serveur: mysql. 5.0.22
requête SQL: SHOW CHARACTER SET;
Enregistrements: 36
Charset | Description | Default collation | Maxlen |
---|---|---|---|
big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
dec8 | DEC West European | dec8_swedish_ci | 1 |
cp850 | DOS West European | cp850_general_ci | 1 |
hp8 | HP West European | hp8_english_ci | 1 |
koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
latin1 | cp1252 West European | latin1_swedish_ci | 1 |
latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
ascii | US ASCII | ascii_general_ci | 1 |
ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
tis620 | TIS620 Thai | tis620_thai_ci | 1 |
euckr | EUC-KR Korean | euckr_korean_ci | 2 |
koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
greek | ISO 8859-7 Greek | greek_general_ci | 1 |
cp1250 | Windows Central European | cp1250_general_ci | 1 |
gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
cp866 | DOS Russian | cp866_general_ci | 1 |
keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |
macce | Mac Central European | macce_general_ci | 1 |
macroman | Mac West European | macroman_general_ci | 1 |
cp852 | DOS Central European | cp852_general_ci | 1 |
latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |
cp1256 | Windows Arabic | cp1256_general_ci | 1 |
cp1257 | Windows Baltic | cp1257_general_ci | 1 |
binary | Binary pseudo charset | binary | 1 |
geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |
cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
Serveur: mysql. 5.0.22
requête SQL: SHOW COLLATION LIKE 'latin1%';
Enregistrements: 8
Collation | Charset | Id | Default | Compiled | Sortlen |
---|---|---|---|---|---|
latin1_german1_ci | latin1 | 5 | Yes | 1 | |
latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 |
latin1_danish_ci | latin1 | 15 | Yes | 1 | |
latin1_german2_ci | latin1 | 31 | Yes | 2 | |
latin1_bin | latin1 | 47 | Yes | 1 | |
latin1_general_ci | latin1 | 48 | Yes | 1 | |
latin1_general_cs | latin1 | 49 | Yes | 1 | |
latin1_spanish_ci | latin1 | 94 | Yes | 1 |
Serveur: mysql. 5.0.22
requête SQL: SHOW COLLATION LIKE 'utf8%';
Enregistrements: 21
Collation | Charset | Id | Default | Compiled | Sortlen |
---|---|---|---|---|---|
utf8_general_ci | utf8 | 33 | Yes | Yes | 1 |
utf8_bin | utf8 | 83 | Yes | 1 | |
utf8_unicode_ci | utf8 | 192 | Yes | 8 | |
utf8_icelandic_ci | utf8 | 193 | Yes | 8 | |
utf8_latvian_ci | utf8 | 194 | Yes | 8 | |
utf8_romanian_ci | utf8 | 195 | Yes | 8 | |
utf8_slovenian_ci | utf8 | 196 | Yes | 8 | |
utf8_polish_ci | utf8 | 197 | Yes | 8 | |
utf8_estonian_ci | utf8 | 198 | Yes | 8 | |
utf8_spanish_ci | utf8 | 199 | Yes | 8 | |
utf8_swedish_ci | utf8 | 200 | Yes | 8 | |
utf8_turkish_ci | utf8 | 201 | Yes | 8 | |
utf8_czech_ci | utf8 | 202 | Yes | 8 | |
utf8_danish_ci | utf8 | 203 | Yes | 8 | |
utf8_lithuanian_ci | utf8 | 204 | Yes | 8 | |
utf8_slovak_ci | utf8 | 205 | Yes | 8 | |
utf8_spanish2_ci | utf8 | 206 | Yes | 8 | |
utf8_roman_ci | utf8 | 207 | Yes | 8 | |
utf8_persian_ci | utf8 | 208 | Yes | 8 | |
utf8_esperanto_ci | utf8 | 209 | Yes | 8 | |
utf8_hungarian_ci | utf8 | 210 | Yes | 8 |
Passer en UTF8 sans changer la structure de la table
Sans changer le charset depuis la structure de la table,
ALTER TABLE `ma_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; --ALTER TABLE `ma_table` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci ;
vous pouvez définir votre connecteur avec les options de charset en UT8, ou bien faire une première requête préalable qui
SET NAMES 'utf8'
Syntaxe de SET
SET NAMES {'charset_name' | DEFAULT} SET NAMES spécifie les valeurs des trois VARIABLES systèmes de session character_set_client, character_set_connection et character_set_results avec le jeu de caractères donné.
Ressources
- Jeux de caractères et collation dans MySQL SHOW CHARACTER SET ; SHOW COLLATION ;
- Jeux de caractères et collations de connexion SET NAMES 'charset_name' ;
- Support de Unicode utf8, l'encodage UTF-8 du jeu de caractères Unicode. Conseil : pour économiser de l'espace avec UTF-8, utilisez VARCHAR au lieu de CHAR.
- Unicode Support MySQL uses no BOM for UTF-8 values.
1 De Fabrice -
Merci bcp pour ce script qui vient de me faire gagner un temps fou.
J'avais commencé à modifier chaque colonne une par une via PhpMyAdmin sur une base de 80 tables.
MERCI
2 De yesyes -
Merci aussi, je tombe sur ton post via la 1ere page de google en cherchant "mysql changer interclassement"
je m'en suis servi pour http://shotonline.lafibre.org
t'es un chef !