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?










share|improve this question


















  • 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 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

















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?










share|improve this question


















  • 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 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















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?










share|improve this question













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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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 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
















  • 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 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










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



















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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







這個網誌中的熱門文章

Xamarin.form Move up view when keyboard appear

Post-Redirect-Get with Spring WebFlux and Thymeleaf

Anylogic : not able to use stopDelay()