上一篇博客,介绍了流的使用,本节来说一下乱码的处理。数据流到了一处,你怎样解码,或者怎么编码,遵照什么规范,就会涉及到乱码的情况。
计算机底层是用二进制来存储数据的,
1、首先我们先不考虑服务器浏览器的情况,只考虑本地
<1>
//解码byte-char String str="中国";///使用eclipse平台默认(GBK) //编码,char到byte byte[] data=str.getBytes();//使用eclipse平台默认(GBK) //解码 System.out.println(new String(data));//输出中国:编码与解码一致
<2>编码用了utf-8,解码却使用默认的编码(GBK)
data=str.getBytes("utf-8"); System.out.println(new String(data));//输出乱码,不一致
涓浗
<3>
data=str.getBytes("utf-8"); System.out.println(new String(data,"utf-8"));
输出:中国
<4>
String str="中国"; System.out.println(str.length()); byte[] data=str.getBytes(); System.out.println(new String(data,0,str.length()-1));//字节数据缺失,乱码
输出:?
<5>、补充一下字节流和字符流的转化InputStreamReader(InputStream),OutputStreamWriter(OutputStream)
BufferedReader br=null; br=new BufferedReader(new InputStreamReader(new FileInputStream(new File("F:/xp/test/Demo1.java")),"utf-8")); String str=null; BufferedWriter bw=new BufferedWriter(new FileWriter(new File("F:/xp/test/Demo11.txt"))); while(null!=(str=br.readLine())){ System.out.println(str); bw.write(str); bw.newLine(); } bw.close(); br.close();
把一个文件的字符拷贝到另外的一个文件。
2、网络情况下的乱码
新建一个Servlet
public class EncodingServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EncodingServlet() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String meg="中国"; OutputStream osOutputStream=response.getOutputStream(); osOutputStream.write(meg.getBytes("utf-8")); //为了全球通用设为utf-8 } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub }
serlvet写给浏览器的98 99(utf-8).不告诉浏览器,用GBK查98 99(GBK) 是 涓浗。
改正方式1:改浏览器的码表(不好,用户可没这么聪明)
改正方式二:response设定编码方式:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setHeander("content-type","text/html:utf-8");//浏览器打开方式 String meg="中国"; OutputStream osOutputStream=response.getOutputStream(); osOutputStream.write(meg.getBytes("utf-8"));//程序输出方式 //为了全球通用设为utf-8 }
程序以什么码表输出了,就一定要用什么码表打开。
改正方式三:jsp里有这个标签:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">来设定编码,我们可以把这个标签来写给浏览器,来让浏览器来解析这个东西,知道怎么编码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String meg="中国";
OutputStream osOutputStream=response.getOutputStream();
osOutputStream.write("meta http-equiv="Content-Type" content="text/html;cha
rset="utf-8"
".getbytes());
osOutputStream.write(meg.getBytes("utf-8"));
//为了全球通用设为utf-8
}
不用http协议发送header,用html的meta标签模拟一个http响应头。
3、还有一个经典的问题:在ServletdoGet方法里
OutputStream osOutputStream=response.getOutputStream(); osOutputStream.write(1));
任然会得不到1,是因为,1是个int型数字,不涉及到编码,而浏览器还傻不拉唧的去找1对应的汉字,就得到的不是1了。
如果这样改
OutputStream osOutputStream=response.getOutputStream(); osOutputStream.write("1");
就能输出1了,输出之前会编码
以上就是乱码的一些情况,与君共勉
相关推荐
改进的混合乱码识别算法(多种乱码混合在一起时可以正确识别不同乱码) 单键解码功能:只要选中需要察看的乱码文本(如果不选中任何内容,则会自动全选), 然后按下预先设定的热键(默认为F7),配合改进的...
改进的混合乱码识别算法(多种乱码混合在一起时可以正确识别不同乱码) 单键解码功能:只要选中需要察看的乱码文本(如果不选中任何内容,则会自动全选), 然后按下预先设定的热键(默认为F7),配合改进的...
在开发Java Web应用程序时,JSP(JavaServer Pages)页面经常遇到字符编码问题,导致页面显示乱码。本文将深入探讨“JSP乱码”的多种解决方案,并提供实用的解决策略。 1. **理解字符编码的基本概念** - 字符编码...
首先,我们需要了解中文乱码产生的原因。在Web通信过程中,数据的编码和解码不一致是导致乱码的主要因素。在Ajax请求中,数据通常以UTF-8格式发送,但如果服务器端或客户端的字符编码设置不正确,就可能导致乱码。...
这样,当文件在没有相应字体的电脑上打开时,字体信息会随文件一起传输,避免乱码。 - 在Word中,通过“文件”->“选项”->“保存”,勾选“嵌入TrueType字体”。在PPT中,选择“文件”->“选项”->“保存”,勾选...
dbf文件是Esri的地理信息系统软件ArcGIS中用于存储表格数据的格式,通常与.shp文件一起使用,构成矢量图层的一部分。这种乱码现象可能是由多种原因引起的,包括编码不匹配、系统设置不当或者Excel与ArcGIS之间的兼容...
### 解决MySQL乱码 在使用MySQL数据库的过程中,可能会遇到字符显示乱码的问题。乱码问题通常是由于字符集设置不正确或不匹配所导致的。本文将详细介绍如何解决MySQL中的常见乱码问题,并提供实际的操作步骤。 ###...
TortoiseCVS-1.12.5及中文乱码解决方法,适用于win10 决TortoiseCVS中文乱码必备,解决方法; 第一:卸载和TortoiseCVS安装一起安装的CVSNT。 第二:安装本版本CVSNT: cvsnt-2.5.03.2382
在标题"aa.rar_乱码加密_加密 乱码"中,我们可以推断出这个压缩包包含了至少两个加密过的文本文件,即"文件加密.txt"和"www.pudn.com.txt"。这种加密方式使得文件内容在未解密的情况下显示为乱码,确保了数据的保密...
在IT行业中,中文乱码问题是一个常见的困扰,尤其是在处理文本数据时。本文将重点解析“关于处理中文乱码问题 Filter 代码”的相关知识点,并结合Java Servlet API进行详细讲解。 首先,我们要理解什么是Filter...
在本文中,我们将探讨如何使用`Spire.Pdf`解决PDF转换为图片时中文乱码的问题,以及如何去除PDF中的水印。 1. **PDF到图片转换中文乱码问题**: 当PDF文档包含中文字符,特别是由某些特定软件生成的PDF,在转换为...
首先,让我们深入了解一下JSP的基础知识。JSP的核心在于它将业务逻辑和页面展示进行了分离,这使得开发者可以专注于页面设计的同时,将数据处理和业务逻辑交给Java代码来处理。JSP页面由两部分组成:静态内容(如...
在使用Microsoft Word 2003处理文档时,有时可能会遇到公式显示为乱码的问题,这通常是由于缺少必要的字体导致的。Word 2003中的公式编辑器使用了特定的数学字体,如“MathJax TeX”或“Cambria Math”,如果系统中...
多语言转译转义工具 比如在日文系统下 用中文工具等 编码乱码带来的麻烦 很有用的工具 和大家一起分享
接下来,我们将深入探讨如何解决`JSP文件上传`时的中文乱码问题。 首先,我们需要理解文件上传的基本流程。在`JSP`中,通常会使用`<form>`标签的`enctype="multipart/form-data"`属性来定义一个支持文件上传的表单...
这个工具类的实现通常会结合`ZipOutputStream`一起使用,以创建和写入ZIP文件。 中文乱码问题在很多编程场景下都是一个棘手的问题,尤其是在处理文件名或路径名时。在ZIP格式中,如果编码方式不正确,可能会导致...
在Java Web开发中,我们经常会遇到GET请求参数乱码的问题,尤其是在处理包含中文字符的URL时。这个问题可以通过使用Servlet Filter来解决。过滤器(Filter)是Java Servlet API的一部分,允许我们在请求到达目标...
这样当然是乱码。尤其出现中文时候。 对这类数据处理当然要用统一的编码来处理。下面话不多说了,来一起看看详细的介绍吧 例子:1 string msg= Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(strcode)); ...
"mp3歌词乱码转换器"就是为了解决这个问题而设计的工具,它能够帮助用户正确地显示和转换MP3文件中的乱码歌词,确保我们享受音乐的同时,也能理解歌曲的情感表达。 MP3歌词通常以LRC(Lyrics)格式存储,这是一种...
《CUE码与乱码转换详解》 在数字音频领域,CUE文件是一种常见的辅助文件,主要用于指示光盘映像中的音轨位置和信息。...通过理解乱码产生的原因和掌握相应的处理技巧,我们可以更顺利地管理和播放我们的数字音乐收藏。