FDavidov
FDavidov

Reputation: 3675

TOMCAT reporting this error: INFO: Character decoding failed

I have a WEB application consisting of a client (mainly AngularJS, JQuery and Bootstrap), a Servlet (TOMCAT) and a database (MySQL).

The user can enter text in a number of places (sort of free-text form). The client prepares a JSON and sends it towards the servlet who forwards to the DB, and a response JSON is returned all the way towards the client.

I found a mishandling (causing a "Character decoding failure" in the servlet) when special characters are included in the text. Specifically, I copied from MS-Word the text and pasted it into the input fields and the string included some characters that MS-Word automatically replaces (e.g. simple quote sign to a titled one - if you just type "I don't know" the ' is replaced by ) causing the error.

I tried removing control characters using myString=myString.replace(/[\x00-\x1F\x7F-\x9F]/g, "") but with no success.

Could anyone suggest what is the standard practice to properly handle this condition?

Thanks!!!

EDIT:

Here are the lines where the error is being reported (the JSON is quite large, so I'm only showing the relevant sections):

Jul 30, 2016 11:56:29 AM org.apache.tomcat.util.http.Parameters processParameters
INFO: Character decoding failed. Parameter [request] with value [{...,"Text":"I donֳ¢ֲ€ֲ™t know"..."I donֳ¢ֲ€ֲ™t know"...}] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.
 Note: further occurrences of Parameter errors will be logged at DEBUG level.

Upvotes: 0

Views: 3039

Answers (1)

Sky
Sky

Reputation: 7711

Try to change the encoding of your Tomcat. You can find it in conf/server.xml, the line like this:

 <Connector port="8080" URIEncoding="UTF-8"/>

Upvotes: 1

Related Questions