Donate Share

InCrEG online gaming platform

Tracker: Bugs

5 Char Encoding Pb / Problème d'encodage? - ID: 1159711
Last Update: Comment added ( emmguyot )

Lorsque j'envoie la chaine suivante dans le chat : "éé"
, j'obtiens la chaine voulue uniquement en local ...
Sur les machines distantes la chaine qui apparait est
: "éé"

Il se trouve que la valeur UTF8 de 'é' est C3A9 ,
celle de à est c3 et celle de © a9

j'ai traçc le doAction effectivement il envoie :

doAction.srv?Action=addChat&Pseudo=edouard&Msg=%C3%A9%C3%A9&Couleur=%230000
00

là où je me serais attendu à trouver

doAction.srv?Action=addChat&Pseudo=edouard&Msg=%E9%E9&Couleur=%23000000

celà vient t il d'un soucis de java? ou d'encodage ou
un oublie de décodage quelque part?



Patriator ( patriator ) - 2005-03-09 10:41

5

Closed

Accepted

Emmanuel Guyot

Package / Mise à disposition

V1.1 (Belote)

Public


Comments ( 9 )




Date: 2005-04-15 17:01
Sender: emmguyotSourceForge.net DonorProject AdminAccepting Donations

Logged In: YES
user_id=654872

[fr] Ce bug est effectivement lié à la version de Tomcat.
Avec les versions 5.x, il est nécessaire de modifier le
paramétrage par défaut qui a changé depuis les version 4.x.

Pour rétablir la situation, il faut modifier le fichier server.xml
de Tomcat. Dans le connecteur HTTP, il est nécessaire
d'ajouter : URIEncoding="UTF-8"
Ainsi par exemple on obtient :
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false" redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8" />

Tests effectués avec succès sur Tomcat 5.5.9 + JSDK
1.5.0_02 sous Windows.

A noter qu'en cas d'utilisation d'Apache + Tomcat, ce
paramétrage n'a pas d'effet. Cependant, il ne me semble pas
que ce problème existe dans ce cas.

[en]
This bug is indeed due to Tomcat.
With th 5.x releases, you have to modify the default
parameters which have changed since 4.x releases.

To restore them, you have to modify the server.xml file of
Tomcat. In the HTTP Connector, you have to add :
URIEncoding="UTF-8"
So, as an example, you get :
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false" redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8" />

Tests have been succesfully made with Tomcat 5.5.9 +
JSDK 1.5.0_02 on a Windows platform.

Please note that in case you are using Apache + Tomcat,
this modification has no effect. However, it doesn't seem to
me that this problem occurs in such a case.



Date: 2005-03-29 11:03
Sender: loneliness

Logged In: YES
user_id=1024614

Je confirme aussi, Tomcat 5 en est la cause (j'ai testé au tout
début et moi aussi ne comprennait pas pourquoi).

J'utilise la version 4.3.1, tout est correct.


Date: 2005-03-14 15:37
Sender: emmguyotSourceForge.net DonorProject AdminAccepting Donations

Logged In: YES
user_id=654872

I think the problem is about Tomcat 5. The tests and the
production platform is Tomcat 4.x and it works fine with this
release.

I keep the bug open and I'm going to install Tomcat 5 to check
the problem and find a common solution to both.

Thanks for you report.

If you can, downgrade Tomcat until the problem is solved and
further tests has been made. There may be others problems too.


Date: 2005-03-10 08:39
Sender: patriator

Logged In: YES
user_id=1224612

Well I thought it was just a frenchie bug, so I didn't put
an English description... sorry.

I wasn't worried about the UTF8 encoding, but about the
decoding. It sounds like the :
request.setCharacterEncoding("UTF8") ,isn't seen (although
there is nothing on the stderr).

If I put a request.toURL on the stderr I get :

doAction.srv?Action=addChat&Pseudo=edouard&Msg=éé&Couleur=...

when the original one was :

doAction.srv?Action=addChat&Pseudo=edouard&Msg=%C3%A9%C3%A9&Couleur=...


2 configs, all the same result :
WinXP , java1.4.2_07 , Tomcat 5.0 , Apache2
Linux 2.6kernel , java1.4.2_06 , Tomcat 5.0 , Apache2

Since I replaced all getParameters(XX) by
URLDecoder.decode(
ServletUtil.doEscape(request.getParameter(XX)), "UTF8")

everything works well, any idea ?


Date: 2005-03-09 22:36
Sender: emmguyotSourceForge.net DonorProject AdminAccepting Donations

Logged In: YES
user_id=654872

[fr] Désolé pour le message précédent en Anglais. En voici la
traduction :

Tout d'abord, L'URL est toujours encodée en UTF8 afin de
pouvoir traiter tout caractere accentués. Il est effectivement
possible d'imaginer un interface Chinoise.

Ensuite, l'aire fonctionne correctement depuis presque 2 ans. Tu
peux vérifier par exemple la servlet DoAction. Tu y trouveras :
request.setCharacterEncoding("UTF8");
Ceci indique que la requete est automatiquement décodée
depuis l'UTF8.

Quelle est ta config ? Ceci pour expliquer tes problèmes.


Date: 2005-03-09 22:32
Sender: emmguyotSourceForge.net DonorProject AdminAccepting Donations

Logged In: YES
user_id=654872

First : THe URL is always UTF8 encoded to be able to handle
every character. Yes, you can imagine a chinese interface.

Second : It works perfectly for almost 2 years. You can check
for example the DoAction servlet. You'll see
request.setCharacterEncoding("UTF8");
This means that the request will be automaticly decoding
according to UTF8.

What is you config ? This would explain why it doesn't work.


Date: 2005-03-09 14:15
Sender: patriator

Logged In: YES
user_id=1224612

Une solution :

URLDecoder.decode(
ServletUtil.doEscape(request.getParameter("Msg")), "UTF8") ,

à faire quasi systématiquement quand on a un
request.getParameter ...


Date: 2005-03-09 13:53
Sender: patriator

Logged In: YES
user_id=1224612

J'en suis au point suivant :
Dans la classe : com.increg.game.servlet.DoAction ,
chaque fois que l'on fait appel à getParameter(xx) ... celui
ci n'est pas correctement décodé si il y a des caractères
spéciaux.

J'ai pensé à la classe servletUtil mais pense que le plus
simple est de parser la requête "à la main" et decoder.


Date: 2005-03-09 12:54
Sender: patriator

Logged In: YES
user_id=1224612

En fait il s'agit sans doute plutôt d'un problème dû à un
double encodage ...
é -> é -> é
je rentre é , je sort et revient j'ai é je quitte l'espace
et reviens j'ai é


Log in to comment.




Attached File

No Files Currently Attached

Changes ( 8 )

Field Old Value Date By
status_id Open 2005-04-15 17:01 emmguyot
close_date 2005-03-09 22:36 2005-04-15 17:01 emmguyot
resolution_id Works For Me 2005-04-15 17:01 emmguyot
status_id Pending 2005-03-10 08:39 patriator
close_date 2005-03-09 22:32 2005-03-09 22:36 emmguyot
close_date - 2005-03-09 22:32 emmguyot
status_id Open 2005-03-09 22:32 emmguyot
resolution_id None 2005-03-09 22:32 emmguyot