在MongoDB中插入异常字符时出现问题。
字符如下:éèíìáàà... etc
基本上,这些字符主要用于拉丁美洲国家。当我通过脚本插入它时(因为如果我在控制台中尝试它,它会回复“非utf-8字符”)它做得很好,好吧,它将它添加到集合中,但有一些奇怪的字符。
如果我做了一个发现,让我们说,“Olá”,我有一个用“Olá”搜索的字段,但是那些奇怪的字符,它回复了我想要的字段上的数据...... 但是,如果在该字段中存在某种不是您的标准英文字典的字符,它会显示如下内容:
�til?
有什么方法可以解决这个问题吗?
我正在使用Websphere Portal服务器,PortletView文件输出为UTF-8,servlet处理输入的数据,在发送到db进行查询时以UTF-8对其进行编码,并且它还处理它检索的数据从DB到UTF-8(只是为了确定)。
提前致谢。
答案 0 :(得分:1)
检查servlet过滤器是否导致请求使用不正确的字符编码。在将请求的字符编码设置为getParameterXXX()
之前,可以通过在ServletRequest
上调用UTF-8
系列方法之一来解决此问题。
servlet spec表示默认使用ISO8859-1。请参阅 SRV.3.9请求数据编码。
还要确保响应使用正确的内容类型(带编码)。正如上面评论中所述:
String contentType= "text/html;charset=UTF-8";
response.setContentType(contentType);