经常在web开发中碰到中文乱码的问题,一般都是局部性的解决了问题之后就不了了之了。前些天在开发一个小程序,又碰到了中文乱码的问题,于是下定决心彻底解决这个问题。经过了2天的时间,在网上搜索了一些信息,但大都不具权威性。后来无意中发现万方数据库中有关于这方面的论文,下载了三篇看了,受益匪浅。本来是昨天晚上写心得的,遗憾网速太慢,博客上不了,问题解决后兴奋的感觉害得我晚上失眠了。囧!下面总结一下我的收获,希望可以帮助大家从整体上考虑乱码问题,从而解决它。
首先我们要了解web开发的整个流程。如下:
总体框架:客服端(一般指浏览器)<————>服务器端(Tomcat等)<————>数据库系统
服务器处理 数据库驱动
页面转换:html静态页面 <————————> jsp/servlet等 <———————> 数据库
中文乱码主要出现在页面转换之间,静态页面经过服务器转码,提交到逻辑处理部分,然后逻辑处理部分通过数据库驱动与数据库交换信息。我们要注意5个会影响到编码的部分。
1、html静态页面:这个部分的乱码比较好解决,直接在<head>标签中添加页面设置标签<meta http-equiv="content-type" content="text/html;charset=GBK"> ,这个标签的作用是静态页面告诉服务器,"我的页面类型是text/html,编码是GBK,请你按照GBK编码方式来解析我的请求"。
2、服务器默认的编码方式是ISO8859-1。首先服务器会获取请求编码,request.getCharacterEncoding(), 如果请求页面没有如上面的设置,则获取结果为NULL;则服务器使用默认的编码解析请求。此时请求信息已经经过了从GBK——>ISO8859-1的转码。
3、逻辑处理部分,通常为jsp/servlet。jsp页面编码的设置也很简单,
<%@ page contentType="text/html;charset=GBK" %> ,通过服务器处理后的请求信息要正常显示,必须转换编码,ISO8859-1——>GBK,通常的方法是:new String(str.getBytes("ISO8859-1"),"GBK"),即将请求信息转为jsp页面编码。至于servlet,我还没有找到如何设置其编码的方法,它默认是操作系统的编码,可以通过codeName= System.getProperty(file.encoding)获取。然后转换编码new String(str.getBytes(codeName),"GBK")即可。对于返回页面的处理,通过response.setContentType("text/html;charset=GBK")设置返回内容的类型和编码,应该和返回页面的内容和编码相同。
4、数据库驱动,数据库连接的默认方式是ISO8859-1。所以在逻辑处理部分的sql语句中如果包含中文,应该先将中文转码为ISO8859-1编码方式,再填入sql语句中执行操作。对于查询返回的结果就要执行相反的转码操作,从ISO8859-1转到逻辑处理页面的编码。
5、数据库系统,必须支持中文。对于MySQL数据库,默认编码是ISO8859-1,可以设置编码方式。编辑%MySQL%/conf 目录下的my.ini文件,在[mysqld]区域修改default-character-set = utf8,在 [client] 区域添加
default-character-set = utf8,重新启动服务器,在客服端输入show variables like 'character_set_%';结果显示如下:
character_set_client = latin1
character_set_connection = latin1
character_set_database = utf8
character_set_filesystem = binary
character_set_results = latin1
character_set_server = utf8
character_set_system = utf8
然后输入show variables like 'collation_%';显示结果如下:
collation_database = latin1_swedish_ci
collation_connection = utf8_general_ci
collation_server = utf8_general_ci
说明配置文件已经修改成功,数据库已经支持中文啦!
相关推荐
总之,Java Web开发中的中文乱码问题需要从多个层面进行检查和调整,确保数据在整个处理链路中的编码一致性,才能有效地避免和解决乱码问题。这需要开发者具备扎实的字符编码知识,并在实践中积累经验,以便在遇到...
在Java Web开发过程中,乱码问题是开发者经常会遇到的问题之一。它通常发生在处理含有中文或其他非ASCII字符的数据时。本篇文章将详细介绍在Java Web开发中解决乱码问题的方法。 #### 二、乱码产生的原因 乱码主要...
Java Web开发中遇到的中文乱码问题,主要是由不同组件间的编码不一致引起的。为了解决这些问题,开发者需要在各个关键环节确保使用相同的字符集,如在JSP页面、表单处理、数据库连接以及参数传递中明确指定字符编码...
然而,在Java Web开发中处理中文字符时,编码不一致常会导致乱码问题。 字符编码转换在Java Web应用开发中是不可或缺的一个过程。计算机只能识别二进制数,而字母、数字、汉字等通过字符编码转换成二进制形式存储。...
综上所述,解决Java Web开发中的乱码问题需要从多个角度入手,包括开发环境的设置、网络请求的处理、页面编码的配置以及数据库操作等方面。通过合理设置和编码转换,可以有效避免乱码问题的发生。
乱码问题是 Java Web 开发中一个常见的问题,通常是由于字符编码的错误所致。在 Java 中,字符编码有多种,例如 UTF-8、GBK、ISO-8859-1 等。如果不正确地设置字符编码,可能会出现乱码问题。 解决方法: * 确认...
Java 中文问题是 Java web 开发中常见的一种问题,解决该问题需要了解 Java 中文编码、字符集和过滤器的使用。本文将总结 Java 中文问题的解决方法,并提供实践经验和代码示例。 一、支持中文 在 Java 中,支持...
Java Web开发中的乱码问题.pdf
此外,实际开发中还需要掌握如HTML、CSS、JavaScript等前端技术,以及后端Java Web开发的相关技术,如Servlet、JSP、框架技术(如Spring和Hibernate)等。这些都是构建动态网站和Web应用程序不可或缺的组件。通过对...
《Java Web开发速学宝典》是一本专为初学者和有一定基础的开发者设计的教程,旨在快速掌握Java Web开发的核心技术。这本书涵盖了从基础到高级的诸多主题,包括Servlet、JSP、JDBC、MVC框架(如Spring MVC)、过滤器...
Java Web开发实践教程是一门深度探索Java在Web领域应用的课程,旨在帮助学习者掌握从基础到高级的Java Web开发技术。本课程涵盖了广泛的主题,包括Servlet、JSP、MVC框架(如Spring MVC)、数据库交互、过滤器、监听...
字符乱码问题是Java Web程序开发过程中经常遇到的一个问题,它会对用户界面的友好性以及信息的准确传达造成很大的影响。为了解决这个问题,我们首先要了解字符集和字符编码的相关知识,然后分析字符乱码的原因,并...
在深入分析和探讨过滤器在Java Web开发中的应用研究时,首先要了解过滤器的定义及其在Java Web开发中的重要作用。过滤器是一种设计模式,用于拦截请求和响应,以便执行某些预处理或后处理操作。在Java Web开发中,...
书中的章节设置系统而全面,旨在帮助读者逐步掌握Java Web开发的核心技能。 1. 入门篇:这部分通常会介绍Java Web开发的基本概念,包括Web应用程序的运行环境,如Tomcat服务器的安装与配置,以及Java Servlet和JSP...
Java Web开发中的中文乱码问题是一个常见的困扰,尤其是在处理用户输入和数据显示时。问题的核心在于不同组件和环境之间编码方式的不一致。本文将深入探讨Java Web的编码机制,JSP运行原理,以及如何解决常见的乱码...
本文针对Java Web开发中字符编码问题进行探讨,主要围绕字符编码的种类、设置方式以及不同页面类型的代码编写差异,分析中文乱码的成因,并提出解决方案,旨在为初学者提供解决中文乱码问题的思路。 首先,计算机...
源代码压缩包"Tomcat与Java Web开发技术详解源代码.rar"包含了书中所有示例的完整实现,为读者提供了动手实践的宝贵资源。 首先,Tomcat是Apache软件基金会下的一个开源项目,是一款轻量级的应用服务器,主要支持...
在Java Web开发中,乱码问题是一个常见的挑战,它涉及到字符编码、数据传输以及环境配置等多个方面。本文将深入探讨这些问题及其解决方案。 首先,我们需要理解什么是乱码。乱码通常出现在字符集不匹配的情况下,即...