2016-07-30 138 views
0

我有一个由客户端(主要是AngularJS,JQuery和Bootstrap),一个Servlet(TOMCAT)和一个数据库(MySQL)组成的WEB应用程序。TOMCAT举报此错误:信息:字符解码失败

用户可以在许多地方输入文本(自由文本形式)。客户端准备JSON并将其发送给转发到数据库的servlet,并且响应JSON将一直返回到客户端。

当文本中包含特殊字符时,我发现处理不当(在servlet中导致“字符解码失败”)。具体来说,我从MS-Word复制了文本并将其粘贴到输入字段中,并且该字符串包含MS-Word自动替换的一些字符(例如,简单的引号到标题的字符 - 如果您只键入“我不知道” '被替换为)导致错误。

我试着用myString=myString.replace(/[\x00-\x1F\x7F-\x9F]/g, "")去除控制字符,但没有成功。

任何人都可以建议什么是标准的做法,以妥善处理这种情况?

谢谢!

编辑:

下面是其中所报告的错误线(JSON是相当大的,所以我只显示相关部分):

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. 

回答

1

尝试更改编码你的雄猫。你可以在conf/server.xml找到它,像这样的线:

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

没有。仍然是同样的问题。我在卡塔利娜看到以下内容:“我不知道”,而不是“我不知道”。 – FDavidov

+0

你能显示更多日志消息吗? – Sky

+0

试试看,如果这适合你:[http://stackoverflow.com/questions/17728077/utf-8-decoding-problems-in-java-tomcat7] – Sky

相关问题