javascript - JSP、JQuery 和 Javascript 的字符集编码问题

标签 javascript jquery html jsp jquery-easyui

我在基于 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 。

关于可能发生的事情或解决方案的任何想法?谢谢!

最佳答案

在搜索响应的传奇之后,我设法找到了解决方案。

首先,为了实现对整个应用程序的正确解析,我的问题通过三个步骤解决了:

  1. 将 Eclipse 中的所有 .js 文件转换为 UTF-8 字符集(不是默认设置)。在Eclipse中右击.js文件-属性-资源-字符集编码区-选择UTF-8;之后,应 chop 文件中的所有特殊字符。一定要换成新的(可能某处有自动转换功能,随意研究);它解决了每个外部 javascript 代码中的 Mojibakes 字符问题,例如“警报”(JSP 页面中的脚本运行良好)。

  2. 所有使用 response.getWritter().write("...") 的响应都应该使用 response.setCharacterEncoding("UTF-8");您也可以使用过滤器,如 @BalusC 在其他答案中所写。例如,它通过 jQuery Easy UI Messager 插件解决了消息传递问题。

  3. 从数据库检索的数据(确保您的数据库也使用 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/

相关文章:

c# - 变量命名讨论 : C# vs JavaScript?

jquery - 如何在 IE (7,8,9) 中显示此 jQuery 动画?

javascript - 在一个元素上切换两个类而不切换同级元素

javascript - 如何使用 onfocus 显示和隐藏一个 div

javascript - 如何使用 jQuery 应用嵌套的 css?

javascript - 如何在 Google App Engine 上的 HTML 页面中嵌入处理草图

javascript - 是否可以在 MSBOT 卡中呈现 JavaScript 脚本?

javascript - Javascript 中的自动换行功能

JavaScript RegEx (0-100) 但不是前导 0

java - 只要 jquery 函数正在执行,就显示加载图像