我有一个由客户端(主要是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.
没有。仍然是同样的问题。我在卡塔利娜看到以下内容:“我不知道”,而不是“我不知道”。 – FDavidov
你能显示更多日志消息吗? – Sky
试试看,如果这适合你:[http://stackoverflow.com/questions/17728077/utf-8-decoding-problems-in-java-tomcat7] – Sky