OVH Cloud OVH Cloud

PHP, MySQL et chinois

6 réponses
Avatar
Fred
Bonjour,

Je tente de réaliser un site en chinois en php (4.3.10) /mysql (4.1.8)
sous Windows.

Voila ma table :
CREATE TABLE `chinois` (
`fr` varchar(100) character set latin1 NOT NULL default '',
`cn` varchar(100) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;


j'ai le problème suivant :

- Si j'utilise phpMyAdmin 2.7, je peux ajouter et visualiser des textes
en chinois sans problème.

- Si j'utilise PhpMyAdmin 2.5 ou un script php maison pour afficher mes
données, je n'obtiens que des points d'interrogation. (pourtant, dans
mon script, un echo de caractères chinois en dur s'affiche correctement
dans mon navigateur).

Question subsidiaire :
Une fois que j'aurais réglé ce problème, mon site pourra-t-il
fonctionner sous Linux avec php 4.3.10 et MySQL 3.23.58 ?

Merci pour votre aide,

@+

Fred

6 réponses

Avatar
dmetzler
Je ne connais pas les versions de phpMyAdmin, mais entre deux versions,
il y a du avoire un changement au niveau du traitement des charset. A
priori la 2.7 fonctionne bien pour ça ;)

Pour ton script, il faudrait peut être que tu nous montre un bout de
code pour qu'on puisse voir d'où ça peut venir.
Avatar
Fred


- Si j'utilise phpMyAdmin 2.7, je peux ajouter et visualiser des textes
en chinois sans problème.


En fait, je viens de trouver la solution, en épluchant les sources de
phpMyAdmin : il suffit d'executer la requete suivante avant les autres :

mysql_query("SET CHARACTER SET utf8");

@+

Fred

Avatar
Bobe
nous a dit le 10.11.2005 14:26:
Je ne connais pas les versions de phpMyAdmin, mais entre deux versions,
il y a du avoire un changement au niveau du traitement des charset. A
priori la 2.7 fonctionne bien pour ça ;)



Idem pour la 2.6 (la 2.7 n'est pas encore passée en stable).

--
Aurélien Maille

Avatar
loufoque

Voila ma table :
CREATE TABLE `chinois` (
`fr` varchar(100) character set latin1 NOT NULL default '',
`cn` varchar(100) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;




Est-ce que tu veux pouvoir afficher du texte français et chinois sur la
même page ?

Avatar
webmaster
Bonjour

Il me semble que pour du Chinois il faut passer en UTF16 puisque les
caracteres sont codés en double byte (idem que l'Arabe ou le Japonais)

David
Avatar
Olivier Miakinen
Bonjour,


Il me semble que pour du Chinois il faut passer en UTF16 puisque les
caracteres sont codés en double byte (idem que l'Arabe ou le Japonais)


Je ne sais pas bien à quoi tu réponds. Ce serait sympa de citer un
minimum de texte (pas tout, bien sûr) ainsi qu'il est expliqué par
exemple ici : <http://www.giromini.org/usenet-fr/repondre.html>.

Donc, je ne sais pas à la place de quoi tu proposes UTF-16. Si c'est à
la place d'un encodage 8 bits tel que ISO-8859-1 par exemple, alors
c'est sûr que UTF-16 saura faire ce qui est impossible à ISO-8859-1,
mais UTF-8 peut le faire aussi. Si c'est à la place de UTF-8, alors non,
il n'y a aucune raison.

UTF-8 présente de nombreux avantages que n'ont pas les deux variantes
d'UTF-16, dont :
- compatibilité binaire avec US-ASCII ;
- un seul encodage (deux pour UTF-16, entre big et little endian) ;
- possibilité de se resynchroniser n'importe où.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)