笔记心得编码和解码_第1页
笔记心得编码和解码_第2页
笔记心得编码和解码_第3页
笔记心得编码和解码_第4页
笔记心得编码和解码_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

问题一:在java中文件时应该采用什么编码Java文件的方式总体可以分为两类:按字节和按字符。按字节读取就是采用InputStream.read()方法来字节,然后保存到一个byte[]数组藏了一个编码的细节,newString(byte[]);会使用操作系统默认的字符集来解码字节数组,中文操作系统就是GBK。而我们从输入流里 是GBK编码的,因为从输入流里的字节编码取决于被 并保存。此时demo.txt编码是ANSI,中文操作系统下就是GBK。此时我们用输入字节流该文件所得到的字节就是使用GBK方式编码的字节那么我们最终newString(byte[]);时采用平台默认的GBK来编码成String也是没有问题的(字节编码和默认一致)。试想一下,如果在保存demo.txt文件时,我们选择UTF-8编码,那么该文件的编码就不在是ANSI了,而变成了UTF-8。仍然采UTF-8编码的字节。两次的字节显然不一样,一个很明显的区别就是:GBK每个汉字两个字节,而UTF-8每个汉字三个字节。如何我们最后还使用new采用的默认GBK,而我们的字节是UTF-8字节。正确的办法就是使用newOutputStreamoutnewFileOutputStream("d:\\demo.txt");demo.txtGBKGBK。如果UTF-8demo.txtUTF-8。这里还有一点,如果123abcasciigetBytes()getBytes(“UTF-8”)GBK这里可以总结一下,InputStreamOutputStream下面说说采用字符输入流来文件,符。说起字符流,不得不提的就是InputStreamReader。以下是javaapi对它的说明:InputStreamReader是字节流通向字符流的桥梁:它使用指定的charset字节并将其为字符它使用的字符集可以由名称指定或显式给InputStreamReader在底层还是采用字节流来 ,方式,那么会采用操作系统默认的GBK来的字节。还用上面demo.txt的例子,假设demo.txt编码方式为GBK,我们使用如下代码来文件: in=newInputStreamReader(new编码的,而InputStreamReader默认采用 也是GBK。如果把demo.txt编码方式换成UTF-8,那么我们采用这种方式 in=newInputStreamReader(new给InputStreamReader指定编码,这样二者统一就不会出现乱码了的。字符输出流的主要类是:OutputStreamWriter。JavaapiOutputStreamWritercharsetGBKOutputStreamWriter:OutputStreamWriterout=newOutputStreamWriter(newUTF-8UTF-8javajavacjava通常我们手动建立一个java文件Demo.java,并保存。此时Demo.java文件的编码为ANSI,中文操作系统下就是GBK.然后使用javac命令来编译该源文件。”javacDemo.java”。Javac也需要java文件,那么javac是使用什 我们的字节呢?其实javac采用了操作系统默认的GBK编码解 不会出现乱码情况。让我们来做点手脚,在保存Demo.java文件时,我们选择UTF-8保存。此时Demo.java文件编码就是UTF-8了。我们再使用”javacDemo.java”来编译,如果Demo.java里含有中文字符,此时控制台会出现警告信息,也出现了乱码。究其原因,就是因为javac采用了GBK编码我们定我们的编码。如下:javac-encodingUTF-8Demo.javaEclipsejavaIDEAntjavaAnt也是我常用的编译java文件的工具。首先,必须知道Ant在其javacjava1AntAntUTF-8javaencoding”UTF-8java<javacdestdir="${classes}"target="1.4"source="1.4"deprecation="off"debug="on"debuglevel="lines,vars,source"optimize="off"encoding="UTF-8">问题三:tomcatjspjsp<%@pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding乱码情况。其实这个属性就是告诉tomcat采用什么编码来jsp文件的。它jspjsp是GBK编码的,tomcat文件时采用也是GBK编码,所以能保证正确的的字节。不会出现乱码。如果把pageEncoding设置为UTF-8,那么 文件过程中转码就出现了乱码。上面说我常常不写pageEncoding这个属性,但是也没出现过乱码,这是怎么回事呢?那是因为如果没有pageEncoding属性,tomcat会采用contentType中charset编码来jsp文件,我的jsp文件编码通常设置为UTF-8,contentType的charset也设置为UTF-8,这样tomcat使用UTF-8编码来的jsp文件,二者编码一致也不会出现乱码。这只是contentType中charset的一个作用,它还有两个作用,后面再说。可能有人会问:如果我既不设置pageEncoding属性,也不设置contentType的charset属性那么tomcat会采取什么编码来 问题二和问题三分析的过程其实就是从源文件àclassunicodeGBKunicode,UTF-8unicode。因为只有采用正确的编码来转码才能保证不出现乱码。JvmjavaSysout.out.println比如:Sysout.out.println(“我们”)。经过正确的后”我们”是unicode保存在内存中的,但是在向标准输出(控制台)输出时,jvmGBK)unicodeGBKGBK的,不会出现乱码。在Eclipse中可以设置控制台的字符编码,具置在RunConfiguration框的Common里,我们可以试着设置为UTF-8,此时的输出jspout.println()据<%@pagelanguage="java"contentType="text/html;charset=utf-8"contentTypetomcatHTMLTomcatunicodetomcatcontentTypecharsetHTTPhttpcontentTypecharsetcontentTypecharset1).在没有pageEncoding属性时,tomcat使用它来的jsp文件2).tomcat3).为了能更好的理解上面所说的和转码过程,我们举一个例子inde

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论