x-www-form-urlencoded and UTF-8
up vote
0
down vote
favorite
Java web application servlet reads the form POST request parameters using wrong encoding. The web page renders the UTF-8 correctly and contains the following tag:
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
The form in question doesn't specify any specific charset, which means it should use the UTF-8 as default. When I capture the POST request using browser tools, the URL-encoded value sent to the server actually represents the correct Unicode input. The request content-type header is set as follows.
Content-Type application/x-www-form-urlencoded
However, when I try to read the request parameters in Servlet, the wrong encoding is used for the string.
String values = request.getParameterValues(key);
How do I enable the Servlet requests (all HTTP methods) to use UTF-8?
forms http servlets unicode utf-8
add a comment |
up vote
0
down vote
favorite
Java web application servlet reads the form POST request parameters using wrong encoding. The web page renders the UTF-8 correctly and contains the following tag:
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
The form in question doesn't specify any specific charset, which means it should use the UTF-8 as default. When I capture the POST request using browser tools, the URL-encoded value sent to the server actually represents the correct Unicode input. The request content-type header is set as follows.
Content-Type application/x-www-form-urlencoded
However, when I try to read the request parameters in Servlet, the wrong encoding is used for the string.
String values = request.getParameterValues(key);
How do I enable the Servlet requests (all HTTP methods) to use UTF-8?
forms http servlets unicode utf-8
1
HTML meta tag is ignored when HTML document is retrieved via a HTTP response. You need to set the desired encoding in the HTTP response instead like as instructed in every highly upvoted answer about how to correctly use UTF-8 in a servlet based application. As to the multipart/form-data encoding problem, there have been bugs in existing servers. If you tell which one exactly you're using you might have more chance on an answer. Don't forget to try in the meanwhile the latest version of your specific server.
– BalusC
Nov 9 at 13:58
<meta http-equiv="Content-Type">
in HTML 4, and<meta charset>
in HTML 5, overrides the charset specified in the HTTP headers. Just about every browser supports that nowadays. Also,<form>
has an optionalaccept-charset
attribute that specifies the charset(s) the submitter MUST use regardless of the HTML's charset.
– Remy Lebeau
Nov 9 at 18:23
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Java web application servlet reads the form POST request parameters using wrong encoding. The web page renders the UTF-8 correctly and contains the following tag:
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
The form in question doesn't specify any specific charset, which means it should use the UTF-8 as default. When I capture the POST request using browser tools, the URL-encoded value sent to the server actually represents the correct Unicode input. The request content-type header is set as follows.
Content-Type application/x-www-form-urlencoded
However, when I try to read the request parameters in Servlet, the wrong encoding is used for the string.
String values = request.getParameterValues(key);
How do I enable the Servlet requests (all HTTP methods) to use UTF-8?
forms http servlets unicode utf-8
Java web application servlet reads the form POST request parameters using wrong encoding. The web page renders the UTF-8 correctly and contains the following tag:
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
The form in question doesn't specify any specific charset, which means it should use the UTF-8 as default. When I capture the POST request using browser tools, the URL-encoded value sent to the server actually represents the correct Unicode input. The request content-type header is set as follows.
Content-Type application/x-www-form-urlencoded
However, when I try to read the request parameters in Servlet, the wrong encoding is used for the string.
String values = request.getParameterValues(key);
How do I enable the Servlet requests (all HTTP methods) to use UTF-8?
forms http servlets unicode utf-8
forms http servlets unicode utf-8
asked Nov 9 at 13:12
Tuomas Toivonen
3,75463986
3,75463986
1
HTML meta tag is ignored when HTML document is retrieved via a HTTP response. You need to set the desired encoding in the HTTP response instead like as instructed in every highly upvoted answer about how to correctly use UTF-8 in a servlet based application. As to the multipart/form-data encoding problem, there have been bugs in existing servers. If you tell which one exactly you're using you might have more chance on an answer. Don't forget to try in the meanwhile the latest version of your specific server.
– BalusC
Nov 9 at 13:58
<meta http-equiv="Content-Type">
in HTML 4, and<meta charset>
in HTML 5, overrides the charset specified in the HTTP headers. Just about every browser supports that nowadays. Also,<form>
has an optionalaccept-charset
attribute that specifies the charset(s) the submitter MUST use regardless of the HTML's charset.
– Remy Lebeau
Nov 9 at 18:23
add a comment |
1
HTML meta tag is ignored when HTML document is retrieved via a HTTP response. You need to set the desired encoding in the HTTP response instead like as instructed in every highly upvoted answer about how to correctly use UTF-8 in a servlet based application. As to the multipart/form-data encoding problem, there have been bugs in existing servers. If you tell which one exactly you're using you might have more chance on an answer. Don't forget to try in the meanwhile the latest version of your specific server.
– BalusC
Nov 9 at 13:58
<meta http-equiv="Content-Type">
in HTML 4, and<meta charset>
in HTML 5, overrides the charset specified in the HTTP headers. Just about every browser supports that nowadays. Also,<form>
has an optionalaccept-charset
attribute that specifies the charset(s) the submitter MUST use regardless of the HTML's charset.
– Remy Lebeau
Nov 9 at 18:23
1
1
HTML meta tag is ignored when HTML document is retrieved via a HTTP response. You need to set the desired encoding in the HTTP response instead like as instructed in every highly upvoted answer about how to correctly use UTF-8 in a servlet based application. As to the multipart/form-data encoding problem, there have been bugs in existing servers. If you tell which one exactly you're using you might have more chance on an answer. Don't forget to try in the meanwhile the latest version of your specific server.
– BalusC
Nov 9 at 13:58
HTML meta tag is ignored when HTML document is retrieved via a HTTP response. You need to set the desired encoding in the HTTP response instead like as instructed in every highly upvoted answer about how to correctly use UTF-8 in a servlet based application. As to the multipart/form-data encoding problem, there have been bugs in existing servers. If you tell which one exactly you're using you might have more chance on an answer. Don't forget to try in the meanwhile the latest version of your specific server.
– BalusC
Nov 9 at 13:58
<meta http-equiv="Content-Type">
in HTML 4, and <meta charset>
in HTML 5, overrides the charset specified in the HTTP headers. Just about every browser supports that nowadays. Also, <form>
has an optional accept-charset
attribute that specifies the charset(s) the submitter MUST use regardless of the HTML's charset.– Remy Lebeau
Nov 9 at 18:23
<meta http-equiv="Content-Type">
in HTML 4, and <meta charset>
in HTML 5, overrides the charset specified in the HTTP headers. Just about every browser supports that nowadays. Also, <form>
has an optional accept-charset
attribute that specifies the charset(s) the submitter MUST use regardless of the HTML's charset.– Remy Lebeau
Nov 9 at 18:23
add a comment |
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53226366%2fx-www-form-urlencoded-and-utf-8%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53226366%2fx-www-form-urlencoded-and-utf-8%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
HTML meta tag is ignored when HTML document is retrieved via a HTTP response. You need to set the desired encoding in the HTTP response instead like as instructed in every highly upvoted answer about how to correctly use UTF-8 in a servlet based application. As to the multipart/form-data encoding problem, there have been bugs in existing servers. If you tell which one exactly you're using you might have more chance on an answer. Don't forget to try in the meanwhile the latest version of your specific server.
– BalusC
Nov 9 at 13:58
<meta http-equiv="Content-Type">
in HTML 4, and<meta charset>
in HTML 5, overrides the charset specified in the HTTP headers. Just about every browser supports that nowadays. Also,<form>
has an optionalaccept-charset
attribute that specifies the charset(s) the submitter MUST use regardless of the HTML's charset.– Remy Lebeau
Nov 9 at 18:23