我有一个WEB应用程序,包括一个客户端(主要是AngularJS,JQuery和Bootstrap),一个Servlet(TOMCAT)和一个数据库(MySQL)。
用户可以在多个位置输入文本(自由文本格式)。客户端准备一个JSON并将其发送到转发到DB的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.
答案 0 :(得分:1)
尝试更改Tomcat的编码。您可以在conf/server.xml
中找到它,如下所示:
<Connector port="8080" URIEncoding="UTF-8"/>