Jquery UTF-8网站在使用特定浏览器时遇到问题

Jquery UTF-8网站在使用特定浏览器时遇到问题,jquery,json,oracle,jsp,character-encoding,Jquery,Json,Oracle,Jsp,Character Encoding,我已经使用JSP构建了一个具有表示层的web应用程序。 在每个JSP中,我都定义了如下字符集: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ... 我已经检查过在其他计算机上编辑配置文件,结果是一样的。 我不知道问题出在哪里,有什么帮助吗?谢谢 更新:表单提交上的JS代码: $(function() { $(

我已经使用JSP构建了一个具有表示层的web应用程序。 在每个JSP中,我都定义了如下字符集:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
我已经检查过在其他计算机上编辑配置文件,结果是一样的。 我不知道问题出在哪里,有什么帮助吗?谢谢

更新:表单提交上的JS代码:

$(function() {
    $('#user-update').submit(function(event) {    
        event.preventDefault();
        ...
        $.ajax({
            type: 'PUT',
            url: '/user/${user.userId}/update',                    
            data : JSON.stringify($('#user-update').serializeObject()),
            contentType: 'application/json',
            success: function() {
            ...

页面的内容编码与提交表单数据的编码没有任何关系(不管怎样,以您关心的任何方式)

我有点担心JSON.stringify($(“#用户更新”).serializeObject())。不需要调用
stringify
;jQuery将为您做到这一点。这就足够了:

data: $('#user-update').serializeObject(),
这还应该解决浏览器和服务器之间的所有编码问题——jQuery将确保这一点

要帮助调试此问题,您必须在以下位置添加日志记录:

console.log($('#user-update').serializeObject());
在AJAX请求之前。您还可以使用web浏览器的开发人员工具查看网络请求和响应

在服务器端,记录您获得的数据,以确保不会向数据库中注入垃圾。然后使用SQL工具查询数据库中的数据,以确保数据以正确的方式保存

最后,在代码再次从数据库中读取数据后记录数据


在将来,我建议为上面的每个步骤编写单元测试,因为这样可以从一开始就避免这种混乱:-)

我通过在我的
web.xml
文件中添加
CharacterEncodingFilter
解决了这个问题:

<filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

字符编码滤波器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
字符编码滤波器
/*

还要检查从服务器发送的HTTP头。@sodik我正在使用
$.ajax()
函数。那我可以跟查塞特说清楚吗?谢谢如果你真的在不同的浏览器中得到不同的结果,很可能就是问题所在。尝试使用FF(firebug->network)和chrome(developer tools->network)捕获您的请求,并检查HTTP头是否存在(或者是否存在差异)。是的,我对服务层和dao层进行了单元测试。这就是为什么我认为Javascript方面的问题是什么(我对……了解较少)。你在我的序列化上是对的。。。我不知道如何做得更容易。最后,我想通过在服务器中添加一个
characterEncodingFilter
来解决这个问题。我将很快发布我的答案。谢谢你的回答!
<filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>