`
javaG
  • 浏览: 554945 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

web开发java中文编码问题

    博客分类:
  • java
阅读更多

 

关于JSP页面中的pageEncoding和contentType两种属性的区别:

pageEncoding是jsp文件本身的编码

contentType的charset是指服务器发送给客户端时的内容编码


JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType。

第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。

第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。

JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。

第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效

contentType的設定.

pageEncoding 和contentType的预设都是 ISO8859-1. 而随便设定了其中一个, 另一个就跟着一样了(TOMCAT4.1.27是如此). 但这不是绝对的, 这要看各自JSPC的处理方式. 而pageEncoding不等于contentType, 更有利亚洲区的文字 CJKV系JSP网页的开发和展示, (例pageEncoding=GB2312 不等于 contentType=utf-8)。

jsp文件不像.java,.java在被编译器读入的时候默认采用的是操作系统所设定的locale所对应的编码,比如中国大陆就是GBK,台湾就是BIG5或者MS950。而一般我们不管是在记事本还是在ue中写代码,如果没有经过特别转码的话,写出来的都是本地编码格式的内容。所以编译器采用的方法刚好可以让虚拟机得到正确的资料。

但是jsp文件不是这样,它没有这个默认转码过程,但是指定了pageEncoding就可以实现正确转码了。

举个例子:

<%@ page contentType="text/html;charset=utf-8" %>

大都会打印出乱码,因为输入的“你好”是gbk的,但是服务器是否正确抓到“你好”不得而知。

但是如果更改为

<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%>

这样就服务器一定会是正确抓到“你好”了。

要是简单的说作用范围

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
只适用于HTML,即在 HTML 中设置页面的编码方式
如果被访问的是一个静态的 HTML 页面。可以通过以上方式来设置页面的编码方式。

对于 <%@ page language="java" contentType="text/html; charset=utf-8" >
上面已经说的比较清楚了
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
下面是以前写的东西,感觉理解还是有点偏差:
用户浏览器输入过程 :<系统默认编码,Windows下的话为GBK(相当于gb2312,gb2312为其子集)>,用户输入的字符编码为系统默认的。
浏览器代码到web容器 :默认web容器以iso-8859-1来读入这个输入流。相当于getBytes("iso-8859-1")
所以要在java代码中正确显示字符集要使用
request.setCharacterEncoding("GBK");
//相当于new String(req.getParameter("name").getBytes("iso-8859-1"),"gbk"),但是如果这样设置后,jsp代码中要加入<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
 
web容器到浏览器
如果不设置page,默认为以iso-8859-1编码读入流输出到web容器。但是设置时设置
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>编码总是用问题,
设置成<%@ page language="java" import="java.util.*" pageEncoding="ISO8859_1"%>就没问题了。
page的作用是让web容器按pageEncoding设置的编码读入流输出到浏览器,这里要和mate中的区别开来,mate是用来告诉浏览器用什么编码来显示。

注:这里的page是指<%@ page language="java" import="java.util.*" pageEncoding="×"%>
参考文档:http://www.wujianrong.com/archives/2006/11/java_10.html 进阶--对Java/JSP中文乱码问题解决心得

分享到:
评论

相关推荐

    java web开发解决乱码问题

    在Java Web开发过程中,乱码问题是开发者经常会遇到的问题之一。它通常发生在处理含有中文或其他非ASCII字符的数据时。本篇文章将详细介绍在Java Web开发中解决乱码问题的方法。 #### 二、乱码产生的原因 乱码主要...

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

    4. **处理HTTP请求和响应**:在Web开发中,正确设置HTTP请求和响应的字符集,确保客户端与服务器之间的数据传输不会因为编码不一致而导致乱码。 5. **数据库连接配置**:在建立数据库连接时,显式设置字符集编码,...

    Java WEB开发中的中文乱码问题解决方法.pdf

    然而,在Java Web开发中处理中文字符时,编码不一致常会导致乱码问题。 字符编码转换在Java Web应用开发中是不可或缺的一个过程。计算机只能识别二进制数,而字母、数字、汉字等通过字符编码转换成二进制形式存储。...

    java中文乱码解决问题

    JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的表单数据中有中文字符 在...

    java 中文问题(java web 开发中的中文问题)

    Java 中文问题是 Java web 开发中常见的一种问题,解决该问题需要了解 Java 中文编码、字符集和过滤器的使用。本文将总结 Java 中文问题的解决方法,并提供实践经验和代码示例。 一、支持中文 在 Java 中,支持...

    java中文乱码问题解决

    Java中文乱码问题是Java开发中常见的问题,尤其是在Web开发中,乱码问题会导致页面显示混乱,影响用户体验。解决乱码问题需要了解编码的基本原理和各种编码格式的区别。 编码的原因可以总结为两点:计算机中存储...

    Java Web开发常见问题.pdf

    Java Web开发中遇到的中文乱码问题,主要是由不同组件间的编码不一致引起的。为了解决这些问题,开发者需要在各个关键环节确保使用相同的字符集,如在JSP页面、表单处理、数据库连接以及参数传递中明确指定字符编码...

    Java中文乱码问题研究.pdf

    Java语言的跨平台特性使其在各种系统环境下能够正确运行,但是,在开发Java Web应用程序时,因为编码不统一,经常会出现中文乱码问题。这是因为Java语言在设计之初就考虑到了国际化的问题,但是,实际开发中,中文...

    关于Java+Web技术开发中中文乱码问题的深入探讨.pdf

    中文乱码问题是 Java Web 技术开发中一个常见的问题,但通过配置 Tomcat 的编码方式、在 Java 代码中指定编码方式、使用 Unicode 字符等方法,可以解决这个问题。同时,统一编码方式、使用字符编码检测工具、学习 ...

    Java开发乱码问题解决方法汇总

    Java开发乱码问题解决方法汇总 Java开发中乱码问题是非常常见的问题之一,而解决这些问题需要具备一定的技术知识和经验。在本文中,我们将总结一些常见的Java开发乱码问题解决方法,希望能够为读者提供帮助。 1. ...

    java+jsp+mysql开发 web项目处理中文乱码问题

    处理 Java+jsp+mysql 开发 web 项目中文乱码问题 在 Java+jsp+mysql 开发 web 项目中,中文乱码问题是一个常见的问题,影响着项目的正常运行。下面我们将从四个方面来解决中文乱码问题: 一、Jsp 输出中文的乱码...

    Java Web开发中文乱码问题的研究与解决.pdf

    总之,Java Web开发中的中文乱码问题需要从多个层面进行检查和调整,确保数据在整个处理链路中的编码一致性,才能有效地避免和解决乱码问题。这需要开发者具备扎实的字符编码知识,并在实践中积累经验,以便在遇到...

    java web开发中常遇到的问题

    乱码问题是 Java Web 开发中一个常见的问题,通常是由于字符编码的错误所致。在 Java 中,字符编码有多种,例如 UTF-8、GBK、ISO-8859-1 等。如果不正确地设置字符编码,可能会出现乱码问题。 解决方法: * 确认...

    Java Web开发中的乱码问题.pdf

    Java Web开发中的乱码问题.pdf

    Java关于中文乱码问题的多种解决方法

    本文将深入探讨几种解决Java中中文乱码问题的方法,并以MyEclipse为开发环境,结合实际示例进行讲解。 1. 文件读写中的乱码: 当Java程序读取或写入包含中文字符的文件时,需要设置正确的字符编码。例如,使用`...

    java中文乱码问题

    解决Java中文乱码问题的核心在于:确保每个环节的编码一致,从源代码到最终显示的所有过程都应采用相同的字符编码标准。在实践中,推荐使用UTF-8编码,因为它具有广泛的支持和兼容性。 在实际项目中,当遇到乱码...

    轻松学Java Web开发

    要成为一名优秀的Java Web开发工程师,不仅要理解这些基础概念,还要深入研究这些技术背后的原理和实现细节。此外,实际开发中还需要掌握如HTML、CSS、JavaScript等前端技术,以及后端Java Web开发的相关技术,如...

    Java Web开发中的中文乱码问题分析及解决方案.pdf

    Java Web开发中的中文乱码问题是一个常见的困扰,尤其是在处理用户输入和数据显示时。问题的核心在于不同组件和环境之间编码方式的不一致。本文将深入探讨Java Web的编码机制,JSP运行原理,以及如何解决常见的乱码...

    Java Web项目开发中的中文乱码问题与对策.pdf

    为避免乱码问题,开发Java Web项目时,应确保整个开发环境、文件编码、HTTP传输和浏览器解析都保持一致的字符编码。在项目初期就设定好统一的编码标准,可以显著减少后续可能出现的乱码问题。同时,对于读取或写入...

Global site tag (gtag.js) - Google Analytics