You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Pierre-Luc Rigaux (JIRA)" <ji...@apache.org> on 2010/10/15 21:05:34 UTC
[jira] Updated: (SLING-1845) Parameters encoding wrong
[ https://issues.apache.org/jira/browse/SLING-1845?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pierre-Luc Rigaux updated SLING-1845:
-------------------------------------
Description:
Hello,
Here is my problem,
I try to post some parameters in different languages and the output is wrong.
Here my exemple.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Parameters</title>
</head>
<body>
Test Parm
<form action="/test/encoding" method="POST" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="property/en" value="School">
<input type="hidden" name="property/fr" value="École">
<input type="hidden" name="property/zh" value="学校">
<input type="hidden" name="school" value="School">
<input type="hidden" name="école" value="École">
<input type="hidden" name="学校" value="学校">
<button type="submit">Submit</button>
</form>
</body>
</html>
Here the HTTP headers
Response Headers
Content-Type text/html; charset=utf-8
Server Jetty(6.1.x)
Transfer-Encoding chunked
Proxy-Connection Keep-alive
Request Headers
Host localhost:8888
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Proxy-Connection keep-alive
Referer http://localhost:8888/client/testParameters.html
Cookie sling.formauth=MTQyMTUxODdiYTI5YTI5ZTYzN2IwNmU4M2ZiYjQ2YThiMjZmOWIzYkA0MTI4NzE2MzQ5Nzg0NkBhZG1pbg
Here the POST
Parameters application/x-www-form-urlencoded
property/en School
property/fr École
property/zh 学校
school School
école École
学校 学校
Content-Type: application/x-www-form-urlencoded
Content-Length: 152 property%2Fen=School&property%2Ffr=%C3%89cole&property%2Fzh=%E5%AD%A6%E6%A0%A1&school=School&%C3%A9cole=%C3%89cole&%E5%AD%A6%E6%A0%A1=%E5%AD%A6%E6%A0%A1
Here my analysis
The problem is due to the method org.apache.sling.engine.impl.parameters.ParameterSupport.getRequestParameterMapInternal() that call the Util.fixEncoding(parameters);
Before calling that method all the values are OK but after they are encoded in ISO-8859-1. To fix the problem I send an other parameter _charset_=utf-8. But I think that is the wrong way to do it.
was:
Hello here my problem,
I try to post some parameters in different languages and the output is wrong.
Here my exemple.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Parameters</title>
</head>
<body>
Test Parm
<form action="/test/encoding" method="POST" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="property/en" value="School">
<input type="hidden" name="property/fr" value="École">
<input type="hidden" name="property/zh" value="学校">
<input type="hidden" name="school" value="School">
<input type="hidden" name="école" value="École">
<input type="hidden" name="学校" value="学校">
<button type="submit">Submit</button>
</form>
</body>
</html>
Here the HTTP headers
Response Headers
Content-Type text/html; charset=utf-8
Server Jetty(6.1.x)
Transfer-Encoding chunked
Proxy-Connection Keep-alive
Request Headers
Host localhost:8888
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Proxy-Connection keep-alive
Referer http://localhost:8888/client/testParameters.html
Cookie sling.formauth=MTQyMTUxODdiYTI5YTI5ZTYzN2IwNmU4M2ZiYjQ2YThiMjZmOWIzYkA0MTI4NzE2MzQ5Nzg0NkBhZG1pbg
Here the POST
Parameters application/x-www-form-urlencoded
property/en School
property/fr École
property/zh 学校
school School
école École
学校 学校
Content-Type: application/x-www-form-urlencoded
Content-Length: 152 property%2Fen=School&property%2Ffr=%C3%89cole&property%2Fzh=%E5%AD%A6%E6%A0%A1&school=School&%C3%A9cole=%C3%89cole&%E5%AD%A6%E6%A0%A1=%E5%AD%A6%E6%A0%A1
Here my analysis
The problem is due to the method org.apache.sling.engine.impl.parameters.ParameterSupport.getRequestParameterMapInternal() that call the Util.fixEncoding(parameters);
Before calling that method all the values are OK but after they are encoded in ISO-8859-1. To fix the problem I send an other parameter _charset_=utf-8. But I think that is the wrong way to do it.
> Parameters encoding wrong
> -------------------------
>
> Key: SLING-1845
> URL: https://issues.apache.org/jira/browse/SLING-1845
> Project: Sling
> Issue Type: Bug
> Components: Engine
> Affects Versions: Commons Mime 2.1.2
> Environment: Mac OS
> Reporter: Pierre-Luc Rigaux
>
> Hello,
> Here is my problem,
> I try to post some parameters in different languages and the output is wrong.
> Here my exemple.
> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
> <title>Test Parameters</title>
> </head>
> <body>
> Test Parm
> <form action="/test/encoding" method="POST" enctype="application/x-www-form-urlencoded">
>
> <input type="hidden" name="property/en" value="School">
> <input type="hidden" name="property/fr" value="École">
> <input type="hidden" name="property/zh" value="学校">
>
> <input type="hidden" name="school" value="School">
> <input type="hidden" name="école" value="École">
> <input type="hidden" name="学校" value="学校">
>
>
> <button type="submit">Submit</button>
> </form>
> </body>
> </html>
> Here the HTTP headers
> Response Headers
> Content-Type text/html; charset=utf-8
> Server Jetty(6.1.x)
> Transfer-Encoding chunked
> Proxy-Connection Keep-alive
> Request Headers
> Host localhost:8888
> User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
> Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> Accept-Language en-us,en;q=0.5
> Accept-Encoding gzip,deflate
> Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive 115
> Proxy-Connection keep-alive
> Referer http://localhost:8888/client/testParameters.html
> Cookie sling.formauth=MTQyMTUxODdiYTI5YTI5ZTYzN2IwNmU4M2ZiYjQ2YThiMjZmOWIzYkA0MTI4NzE2MzQ5Nzg0NkBhZG1pbg
> Here the POST
> Parameters application/x-www-form-urlencoded
> property/en School
> property/fr École
> property/zh 学校
> school School
> école École
> 学校 学校
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 152 property%2Fen=School&property%2Ffr=%C3%89cole&property%2Fzh=%E5%AD%A6%E6%A0%A1&school=School&%C3%A9cole=%C3%89cole&%E5%AD%A6%E6%A0%A1=%E5%AD%A6%E6%A0%A1
>
> Here my analysis
> The problem is due to the method org.apache.sling.engine.impl.parameters.ParameterSupport.getRequestParameterMapInternal() that call the Util.fixEncoding(parameters);
> Before calling that method all the values are OK but after they are encoded in ISO-8859-1. To fix the problem I send an other parameter _charset_=utf-8. But I think that is the wrong way to do it.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.