Jquery UTF-8网站在使用特定浏览器时遇到问题
我已经使用JSP构建了一个具有表示层的web应用程序。 在每个JSP中,我都定义了如下字符集: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() { $(
<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>