如何修复'�'我页面上的符号?servlet和Javascript之间似乎发生了一些事情

How can I fix the '�' symbols on my page? It seems to be something happening between the servlet and the Javascript.

本文关键字:之间 Javascript 发生了 符号 何修复 servlet      更新时间:2023-09-26

我的servlet给了我一个CSV文件,其中包含诸如"é"、"á"或"õ"之类的字符。当我通过浏览器打开servlet时,它运行良好。但当信息到达我的页面时�.

我尝试更改实际数据库中的编码,但没有成功。

console.log(csv),其中csv是来自servlet的信息,它也充满了'�'s.

我甚至不确定问题出在哪里,因为实际页面上有几个拉丁字符,它们的显示方式很正确。

我使用的是Microsoft SQL'08,同时尝试了nvarchar和varchar字段。

必须指示服务器使用UTF-8对JSP输出进行解码。这可以在每个JSP的基础上由完成

<%@page pageEncoding="UTF-8"%>

或在应用范围内通过

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

请参阅此处了解更多信息。

Ankur发布的内容似乎解决了大多数问题,但我在编码方面仍然会不时遇到问题。我真的希望你不必这么做,但我被迫制作了一个小的解码功能,用网络安全的字符替换有问题的字符(通过使用它们的'''u'代码)。

看起来页面的编码实际上是ISO-8859-1。在stackoverflow周围搜索用户提到的术语时,我发现了这个:

jQuery$.get()在没有设置头的情况下回复的字符集?

发生此错误的原因是,无论Ajax得到什么,都没有标头,在$.get命令解决此问题之前设置此标头:

$.ajaxSetup({
    'beforeSend' : function(xhr) {
        xhr.overrideMimeType('text/html; charset=ISO-8859-1');
    },
});

现在,我不知道为什么服务器没有配置为更实用的字符集。