我在基于 Web 的应用程序中遇到一些字符集编码问题。尽管我已正确配置页面编码,但特殊字符仍继续被 chop 显示。
我正在使用 JQuery Easy UI 插件来完成大部分工作,但问题也出现在简单的 jQuery/Javascript 代码中,例如警告框。
JSP 页面标题:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%> <!-- "ISO-8859-1" -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
(...)
jQuery 代码:
$.fn.altStatusTarefa =
function (idStat, idTar){
var motivo =prompt("Informe o motivo da alteração:",
"(Descrição suscinta)");
if (motivo!=null && motivo!="")
{
var result = $.post("TarefaUpdateStatus", {
idTarefa : idTar,
idStatus : idStat,
motivoAlt : motivo
}
);
result.done(function( data ) {
$.messager.show({
title:'Sucesso',
msg:'A alteração foi processada. ' +
'Tecle F5 para atualizar o formulário.',
showType:'show'
});
});
result.fail(function(jqXHR, textStatus) {
$.messager.alert('Erro',
'Houve um problema na atualização: ' +
textStatus,'error');
});
result.always({
});
}
else{
alert("Alteração cancelada.");
}
};
所有这些特殊字符(ã、ç、é 等)在运行时都会被 chop 。
关于可能发生的事情或解决方案的任何想法?谢谢!
最佳答案
在搜索响应的传奇之后,我设法找到了解决方案。
首先,为了实现对整个应用程序的正确解析,我的问题通过三个步骤解决了:
将 Eclipse 中的所有 .js 文件转换为 UTF-8 字符集(不是默认设置)。在Eclipse中右击.js文件-属性-资源-字符集编码区-选择UTF-8;之后,应 chop 文件中的所有特殊字符。一定要换成新的(可能某处有自动转换功能,随意研究);它解决了每个外部 javascript 代码中的 Mojibakes 字符问题,例如“警报”(JSP 页面中的脚本运行良好)。
所有使用
response.getWritter().write("...")
的响应都应该使用response.setCharacterEncoding("UTF-8")
;您也可以使用过滤器,如@BalusC
在其他答案中所写。例如,它通过 jQuery Easy UI Messager 插件解决了消息传递问题。从数据库检索的数据(确保您的数据库也使用 UTF-8!)实现 jQuery Easy UI DataGrid 插件,由 Spring 管理的 Controller 通过 JSON (Gson) 进行编码。在这种情况下,您应该在
@RequestMapping
Spring 注释中使用语句produces={"application/json; charset=UTF-8"}
,如 Jensen 所述。在 this question .
请注意,我没有在这个答案中谈到数据插入,相反的数据流,只是因为它没有影响我的系统(它已经配置好了)。但是您可能会发现,了解 jQuery Easy UI 上的一些功能可以做到这一点很有用,例如请求设置。
我几乎写了一个教程,因为这个非常烦人的问题困扰了我两天,我真的希望能帮助其他人(特别是那些处理非英语语言的人)不要对这些东西感到厌烦。感谢@BalusC 提供的宝贵帮助。
编辑:及时,this post对字符集编码很有用。
关于javascript - JSP、JQuery 和 Javascript 的字符集编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18474186/