Javaweb编程中的乱码问题
程序中的乱码问题,主要出现在我们处理中文数据的过程中出现。从浏览器向服务器请求数据,服务器返回的数据在浏览器中显示为乱码。或者是服务器中的java文件用到中文,也有可能会出现乱码。数据库在处理数据的时候,也会碰到乱码问题。
乱码问题总的来说,就是编码方式不同造成的,在数据的建立、传输、处理以及显示过程中,如果处理数据的编码方式不同,就会很容易造成中文的乱码问题。解决的办法宏观上说,就是在数据处理的各个环节都采用统一的编码方式,这样就可以避免乱码问题的发生。
对于JavaWeb编程来说,主要涉及到html、xml、数据库、java文件、java代码这几个部分。我们以“UTF-8”编码为例,说一些在不同文件中的设置或者代码的处理。
首先在html文件中,就是要告诉浏览器这个html文件编码方式是UTF-8。代码应该放在头文件head中,
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
这就表示这个文件里面的数据都是用UTF-8编码的,它里面的数据浏览器打开的时候就会按照UTF-8编码处理,如果这些数据发送的服务器,服务器也应该用UTF-8编码打开。
其次在xml中,一般xml文件的第一句就会设置编码方式。代码为:
<?xml version="1.0" encoding="UTF-8"?>
第三就是在数据库中,以Mysql数据库为例,在建立数据库的时候,都会选择编码方式,这时就要选择UTF-8,继续建立表、字段的时候就可以默认编码方式,也就是和数据库保持一致,这样就能保证这个数据库中所有的数据都是UTF-8编码。
第四就是java文件,保证java文件的编码方式为UTF-8,一般是利用java编程工具的设置,比如myeclipse软件,就是通过windows---->Preferences,导航中找到general---->Workspace,右侧窗口Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8.点击“ok”保存。当然,还有一些其它的设置方法,这里只列出了其中的一种。对于其它的java编程工具,可以找对应的编码设置方法进行操作。
第五就是在java文件中的代码,特别是Javaweb编程的时候,从浏览器 取得数据,处理后返回给浏览器显示出来,这时候就需要做一些处理。比如我们开发工具是myeclipse,服务器用自带的tomcat,由于tomcat默认编码是ISO-8859-1,所以很容易造成乱码,处理过程是这样的。首先把从浏览器取到的字符串数据txt转换为二进制数据,然后在用UTF-8编码方式还原为字符串。代码为:
byte[] bytes=txt.getBytes("ISO-8859-1");
String utf8txt=new String(bytes, "UTF-8");
在把UTF-8编码的字符串utf8txt返回给浏览器之前,需要在java代码中再次指定编码方式。代码为:
resp.setContentType("text/html,charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
然后再继续用html显示这个数据,代码为:
resp.getWriter().print("<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/></head><body>");
resp.getWriter().print("<strong>"+utf8txt+"</strong>");
resp.getWriter().print("</body></html>");
这样就能够保证浏览器看到显示正常的数据。
对于javaweb编程中碰到的乱码问题一般这些都能够解决。如果在编程中碰到乱码问题,我们可以一步步的调试,找出乱码出现的位置,然后针对性的解决。在java文件中设置断点,看从浏览器拿到的数据是否正常,从数据库拿到的数据是否正常,从tomcat转换后的数据是否正常,一直到服务器返回给浏览器的数据是否正常这个思路来一步步分析,相信乱码问题就会很快查到,并找到解决方法。
以上分析是从如鹏网的杨中科老师解决乱码问题得到的启发,做了一个小小的总结,希望对碰到乱码问题的朋友们有所帮助。
Javaweb编程中的乱码问题的更多相关文章
- javaweb项目数据库中数据乱码
javaweb项目数据库中数据乱码 first: 排查原因: 打断点,查看到底是在执行存数据库操作之前就已经乱码了,还是存数据库操作后乱码的. 前者解决方案: 在web.xml里面加上: <fi ...
- Java编程中中文乱码问题的研究及解决方案
0 引言 Java最大的特性是与平台的无关性及开发环境的多样性.字符串被Java应用程序转化之前,是根据操作系统默认的编码方式编码.Java语言内部采用Unicode编码,它是定长双字节编码,即任何符 ...
- JavaWeb开发中的乱码问题
一,获取系统平台的默认编码 获取系统平台的默认编码: String encoding=System.getProperty("file.encoding"); 注:至于UTF-8编 ...
- javaweb中的乱码问题(初次接触时写)
javaweb中的乱码问题 在初次接触javaweb中就遇到了乱码问题,下面是我遇到这些问题的解决办法 1. 页面乱码(jsp) 1. 在页面最前方加上 <%@ page language=&q ...
- javaweb中的乱码问题
0.为什么需要编码,解码, 无论是图片,文档,声音,在网络IO,磁盘io中都是以字节流的方式存在及传递的,但是我们拿到字节流怎么解析呢?这句话就涉及了编码,解码两个过程,从字符数据转化为字节数据就是编 ...
- Visual Studio下Qt编程中对中文的处理
Visual Studio下Qt编程中对中文的处理 本文为原创文章,原文地址http://www.cnblogs.com/c4isr/p/qt_develop_in_vs.html Visual St ...
- 深入剖析Java编程中的中文问题及建议最优解决方法
摘录自:http://fafeng.blogbus.com/logs/3062998.html http://www.blogbus.com/fafeng-logs/3063006.html 深入剖析 ...
- 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。
这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ...
- Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类
该工具类是在JavaWeb中连接mysql所用到的通用工具类 该类用于Java+Servlet的编程中,方便数据库的操作,连接,获取其列表值.下面是这个数据库操作类的通用方法,基本上能够用于类里面只含 ...
随机推荐
- RabbitMQ教程
1.引言 RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适.RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议 ...
- codeforces 1110F
题解: 正解做法比较简单,考虑离线之后,相邻两个节点之间的答案是有关系的 发现从父亲移到儿子后,改变的距离对于当前节点子树内和子树外的是一样的 所以线段树维护一下区间加减取max就可以了 另外的做法1 ...
- 使用Fiddler完成Android和IOS手机抓包Https
实现原理 Fiddler是PC端有名的HTTP抓包工具,利用它我们可以轻松实现对主机上所有http/https网络请求的捕捉.查看和修改操作. 同时它也提供了代理模式,其它主机由它代理发送的网络请求也 ...
- sql server managerment 给表加说明
右击表 =>点属性 =>扩展属性 =>加 MS_Description
- go语言实现https的简单get和post请求
package main import ( "crypto/tls" "fmt" "io" "io/ioutil" &q ...
- Invitation Cards spfa
题意 n个点m条单向边 计算 从1到每一个点的权值(除了1) 和每个点回到1 的权值之和 正向跑一次 反向跑一次即可 #include<bits/stdc++.h> using na ...
- 2019 蓝桥杯省赛 A 组模拟赛(一)-修建公路
题目: 蒜头国有 nn 座城市,编号分别为 0,1,2,3,...,n-1.编号为 x 和 y 的两座城市之间如果要修高速公路,必须花费 x|y 个金币,其中|表示二进制按位或. 吝啬的国王想要花最少 ...
- 怎样在ASP.NET(C#) 使用Json序列化反序列化问题?
using System; using System.Collections.Generic; using System.Web; using System.Web.Script.Serializat ...
- ISP PIPLINE (十五) AF
主流的AF: CDAF, PDAF, laser assist AF(这个只是辅助,在微距或者拍摄纹理不明显的场景下好用). AF的大致原理就是检测图像锐度或者等价于锐度的参数,推动马达实现合焦或者对 ...
- 在centos 7云服务器上搭建Apache服务器并访问到你的网站
网站是指在互联网上根据一定的规则,用HTML等语言制作的网页的集合.网站的目的是用来展示一些信息,如果是个人网站则是为了展示自己的一些想被人知道的东西,例如自己的一些作品,又或者是通过网站来达到盈利的 ...