`

java输入输出类与字符集编码-乱码

    博客分类:
  • java
阅读更多

java.io包中的输入输出类众多,对于初学者来说很容易混淆.但是当初学者了解了"装饰器模式"后一切变的迎刃而解;同时初学者在学习"字节流"和"字符流"时,为了能更好的区分这两种流类,还需要掌握java中的字符集编码.

先说说这些流的分类吧:java中的抽象流类可分为"字节流"与"字符流"两类;到,相信一些初学者开始疑惑了,究竟"字节流"与"字符流"有什么区别呢.我们说,"字节流"是用本地操作系统字符集编码所表示的流;而"字符流"是用java虚拟机中所设置的字符集编码(如ISO_8859_1)解码字节流所形成的用于存储的字符串(Unicode码).举个很简单的例子吧:比如我们从键盘输入内容然后再将输入内容输出到屏幕,这个过程就是一个"字节流"与"字符流"相互转换的过程.

首先我们通过键盘输入的内容是以字节流的形式输入到计算机中的,并且此字节流是采用本地计算机操作系统字符集编码进行编码的(比如GBK);

然后,我们用此字节流去构造一个String对象,此时如果不指定字符集编码,那么java虚拟机将采用java设置的字符集编码进行解码(如:ISO_8859_1);

最后将此字符串输出到屏幕,System.out类将采用本地计算机操作系统字符集编码将字符串编码成字节流输出到屏幕.

此时大家是否已经想到了java中有时出现的乱码问题,是的,java中的乱码就是由于解码与编码分别采用不同的字符集编码所造成的.

 

分享到:
评论

相关推荐

    java中文乱码问题处理方案.docx

    因此,如果能统一 java 系统的输入、输出和操作系统 3 者的编码字符集合,将能够使 java 系统正确处理和显示汉字。 解决 java 中文乱码问题的方法有多种。最古老的解决方案是使用 String 的字节码转换,这种方案的...

    关于处理Javaweb中中文乱码的问题文.pdf

    在 JavaWeb 技术开发中,中文乱码问题是由于 Java 系统的输入、输出和操作系统的默认编码字符集不一致导致的。 Java 系统内部使用 Unicode 来表示字符,但是在实际应用中,由于应用程序的运行环境不同,和各个本地...

    JAVA 编码

    在JAVA应用程序特别是...为了防止出现乱码,首先需要了解JAVA是如何处理字符的,这样就可以有目的地在输入/输出环节中增加必要的转码。其次,由于各种服务器有不同的处理方式,还需要多做试验,确保使用中不出现乱码。

    day019-io笔记和代码.rar

    IO流: Input Output 输入输出流 自己去扩展: 1. 对象序列化和反序列化生成一个 2. 流的种类: io包下 扩展nio包下 1. IO分类: 输入流 输出流 字节流 InputStream(抽象类) ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例010 在Eclipse项目中编程输出字符表情 15 实例011 为Eclipse添加新的JDK环境 17 实例012 设置Eclipse中文API提示信息 18 实例013 为项目添加类库 20 实例014 使当前项目依赖另一个项目 21 1.3 界面设计器 22 ...

    易语言程序免安装版下载

    修改高级表格支持库,在双击单元格进入编辑状态后,不能收到第一个“字符输入”事件的BUG。 2. OpenGL支持库中的部分英文名称常量已改为中文,并统一在所有常量名称之前加前缀“GL_”,以减少与其它库的冲突机率。...

    Java学习笔记-个人整理的

    {7.10}缓冲字符输入输出流}{113}{section.7.10} {7.11}文件常用操作}{114}{section.7.11} {7.12}对象序列化}{117}{section.7.12} {8}多线程}{121}{chapter.8} {8.1}线程的常用属性与方法}{121}{section.8.1} {...

    ssh(structs,spring,hibernate)框架中的上传下载

    Tfile的Hibernate映射文件Tfile.hbm.xml放在Tfile .java类文件的相同目录下:  代码 2 领域对象映射文件 1. 2. !DOCTYPE hibernate-mapping PUBLIC 3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4. ...

Global site tag (gtag.js) - Google Analytics