`
夜枫舞影
  • 浏览: 50586 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

编码问题

阅读更多
     最近用ajax做点小东西,但是这恼人的编码问题一直若隐若现的,真摸不太透。反正认死了一个理,前台后台都是utf-8准没错,试试看,果然没错,但是这是为啥呢?咱就有关坏毛病,总爱刨根问底就算不全挖出来吧,也得看见过根生什么色的吧。
      于是乎,我开始测试测试。先测试什么呢?先从简单的开始吧。


首先创建个 testA.jsp

<%@ page contentType="text/html; charset=GB2312"%>
<%
request.seCharacterEncoding("GB2312");
%>
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>

<body>

<%
out.print("我是中文");
out.print("<br>")
out.print("我真的是中文");
%>
</body>
</html>


测试一下,没有问题。

在弄个html页面  TesxA_Ajax.html(注:这里用了jquery的ajax库,偷懒下直接copy官方的例子实现ajax,怎么实现无所谓)

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  
  <script>
  $(document).ready(function(){
    $("#myt").load("testA.jsp");  <!-- 就是把 id为myt的div标签读取testA.jsp页面 -->
  });
  </script>
  <style>body{ font-size: 11px; font-family: Arial; }</style>
</head>
<body>
  <b>jQuery Links:</b>
<div id="myt"></div>
</body>
</html>


测试一下,也没问题。


那我一点点改了
先去掉
request.seCharacterEncoding("GB2312");

这样改了之后,浏览器会根据系统当前编码去设置字符集。
直接访问testA.jsp,正常.
再访问 testA_ajax.html,乱码了. 在google半天知道了,xmlhttp默认编码是utf-8,我在response未设置过字符集所以他才找默认的。

再试试,
request.seCharacterEncoding("utf-8");

结果都不用看,这样测试等于没测试。
刚刚不是说了吗,utf-8不能正常显示,又这样设置,再回头看看testA.jsp,连他都给乱码了。
哎,网上不是说统一换成utf-8就OK了,为啥我换半天都不成,反而换成gb2312就没问题。

汗颜,少做了一件事情。
用记事本打开testA.jsp , 然后另存为 保存的时候选择一下 编码 格式为utf-8。

再试试看,终于OK了,真是够罗嗦的,要不是看见大家都赶时髦走国际化用上了utf-8,我干脆前后都是gb2312就完事了。


折腾了半天,有几个结论:
1.<meta http-equiv="Content-Type" content="text/html; charset=GB2312">此句都是为浏览器所用,浏览器根据它选择以后编码方式。而request.seCharacterEncoding("utf-8");是通过web服务器改变http头中的编码集,如果为空则默认为utf-8编码,所以才出现上文所说的gb2312正常而默认便出现乱码的情况了。根据http协议,他所传输的数据带有http头,http头包含字符集标识,也就是说所传输的数据需要用哪种字符集才可以解析。
2.我们利用request.seCharacterEncoding("utf-8");
做的字符集设置,实质上是更改字符输出选择的字符集,而真正显示字符的是testA.jsp,testB.jsp等文本文件,所以要设置其编码方式,否则即便再如何设置字符集也没有任何效果。
3.总之,前台显示数据的文本文件的编码方式,要能够解析后台数据所设置的字符集,才可正常显示。(ps:默认的编码是ansi,即在中文环境下就是gb2312,在日文环境下就是jis。所以默认的文本文件格式是ansi,是不能解析utf-8字符的)

顺便说一下jsp中的get参数传递只要在tomcat的server.xml,配置端口那项 Connector 增加一个
URIEncoding="UTF-8" 属性就可以了!
分享到:
评论

相关推荐

    最全的编码问题,乱码问题,uft-8

    本文将详细探讨编码问题中的两大常见编码格式:UTF-8与GBK,并通过具体的设置步骤来解决常见的乱码问题。 #### 二、字符编码概述 字符编码是计算机中表示字符的一种方式,不同的编码系统用于处理不同的字符集。在...

    log4j乱码问题解决办法

    - **使用统一编码**:为了减少乱码问题的发生,建议在项目中尽可能使用统一的编码格式。一般情况下,UTF-8是最常用也是最推荐的选择。 #### 五、总结 通过以上步骤,可以有效地解决log4j中的乱码问题。正确的日志...

    java中文乱码问题详解--- java中文乱码问题详解

    2. **显式指定编码**:在进行文件读写、网络通信等操作时,显式指定字符集编码,以避免默认编码带来的乱码问题。 3. **配置JVM和Web容器**:合理配置JVM和Web容器的字符集参数,确保在运行时能够正确地处理各种编码...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    总之,解决JavaWeb中的乱码问题需要从多个层面进行考虑:设置过滤器统一请求和响应的编码,确保JSP页面的编码正确,以及在处理文件时注意文件内容的编码。通过这些方式,我们可以有效防止和解决乱码问题,提高应用...

    js出现乱码问题介绍大全

    JavaScript作为前端开发的核心技术之一,在处理字符编码方面同样会遇到各种各样的乱码问题。本文将详细介绍JavaScript中常见的乱码现象及其解决方案,帮助开发者更好地理解和解决这类问题。 #### 二、JS乱码问题...

    Ajax中文乱码问题解决方案

    然而,在处理中文字符时,Ajax请求可能会遇到乱码问题,这主要是由于编码格式不一致或者处理不当导致的。本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**...

    乱码问题的解决

    "乱码问题的解决" 在 Web 开发中,乱码问题是常见的...乱码问题的解决需要从多方面入手,包括设置页面编码、服务器编码、客户端编码、数据库编码和超链接的 url 编码等。只有通过统一编码,才能避免乱码问题的出现。

    用C#2005解决文件编码问题和文件显示乱码问题

    在编程领域,尤其是在处理文本文件时,文件编码和字符乱码问题是一个常见的挑战。本文将深入探讨如何使用C# 2005解决这些问题。C#是一种强大的编程语言,广泛应用于Windows应用程序开发,包括文件操作。 首先,让...

    java zip压缩解压工具解决中文乱码问题

    以上代码片段展示了如何利用Apache Commons IO库来处理中文乱码问题,使得在Java中进行ZIP文件的压缩和解压更加便捷和准确。在实际开发中,根据项目需求,可以选择使用标准库或者Apache Commons IO库,确保文件名和...

    java android zip解压缩(解决压缩中文乱码问题)

    然而,当压缩文件包含中文字符时,解压缩过程中可能会遇到乱码问题。这是因为编码格式不匹配或者处理方式不当导致的。本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 ...

    js中文乱码问题分析及解决方案.docx

    如果Web页面和JavaScript文件使用不同的编码,可能会出现乱码问题。本文将分析JavaScript中文乱码问题的原因,并提供相应的解决方案。 一、JavaScript中文乱码问题的原因 在Web开发中,我们经常使用JavaScript文件...

    struts 中文乱码问题解决

    在Struts应用中,中文乱码问题最常见的原因是编码设置不一致。服务器端和客户端之间的数据传输如果使用不同的字符集,就会导致乱码现象。例如,当客户端以UTF-8编码发送请求,而服务器端却以GBK编码接收时,就会出现...

    深入分析 Java 中的中文编码问题

    Java中默认使用的是Unicode编码,但在处理外部数据时,如读取文本文件、接收HTTP请求或连接数据库时,如果没有正确设置编码,就可能导致乱码问题。例如,当读取GBK编码的文本文件,而使用UTF-8解码时,会出现乱码。 ...

    解决gb2312编码导致乱码问题

    标题提到的“解决gb2312编码导致乱码问题”是一个典型的字符编码问题,它涉及到如何在不同的编码格式之间正确转换,以确保中文字符在传输和显示时的正确性。gb2312是一种较老的中文字符编码标准,主要用于简体中文,...

    中文乱码问题分析 自己总结的

    在 Java 与数据库之间的乱码问题中,大部分数据库都支持以 unicode 编码方式,所以解决 Java 与数据库之间的乱码问题比较明智的方式是直接使用 unicode 编码与数据库交互。很多数据库驱动自动支持 unicode,如 ...

    SAS EG导入UTF-8编码的文本数据文件时的乱码问题解决方法

    在使用SAS EG(Enterprise Guide)导入编码为UTF-8的文本数据文件时,用户可能会遇到中文乱码问题。UTF-8编码的文本文件在处理中文字符时,如果没有正确设置编码,可能会导致中文字符显示不正确,即出现乱码现象。...

    Java开发Client客户端,连接Windows的Telnet服务器,解决了中文乱码问题

    本文将详细探讨如何使用Java开发这样的客户端,并解决在处理中文字符时可能出现的乱码问题。 首先,让我们了解Java中的Socket编程。在Java中,`java.net.Socket`类提供了TCP/IP套接字功能,可以用于建立客户端到...

    Servlet及jsp解决中文乱码问题

    4. **表单提交方式引起的编码问题**:不同的表单提交方式(GET与POST)对于编码的处理方式不同,如果不加以处理,也会导致乱码问题。 #### 三、解决中文乱码的具体方法 ##### 1. 数据库配置 - **MySQL数据库配置*...

    jsp页面文档编码问题

    总的来说,理解和正确使用`contentType`和`pageEncoding`是解决Java Web开发中乱码问题的关键。通过清晰的编码策略和规范的编码实践,可以避免许多不必要的编码困扰,提高项目的稳定性和用户体验。

Global site tag (gtag.js) - Google Analytics