JAVA中有关inputstream中的read方法读取中文乱码的问题

littzh 2009-06-04 09:21:15
java中用fileinputstream中的read方法读取一个文件中的数据并打印出来,文件中的中文打印出来后会出现乱码现象。据说是因为inputstream是字节流,read方法每次只能读取一个字节的数据,而中文在java中是用两个字节表示的,相当于只读了一半,所以打印不出来。这样分析看似很有道理,但是我查了一下,java采用的是unicode编码,所以字符都是用两个字节表示的,这样的话问题就出来了:为什么同是两个字节表示,中文读一半打印不出来,而英文却可以呢
...全文
15108 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
littzh 2009-06-07
正解在这 http://blog.csdn.net/hyde82/archive/2005/06/15/394768.aspx
回复
fsn011362 2009-06-04
学习学习!
回复
breezes2008 2009-06-04
哦,,,应该是:
System.out.println(new String(br.nextLine().getBytes(),"UTF-8"));
回复
breezes2008 2009-06-04
是编码与解码不一致的原因。
6楼指定了其编码格式是UTF-8,当然解码时也得用UTF-8。
System.out.println(br.nextLine().getBytes(),"UTF-8");
回复
非典型射手 2009-06-04
流分为字节流和字符流,用字符流读取就没问题,比如楼上的方法
回复
wenq0917 2009-06-04

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"), "utf8"));

用这种方式读就可以指定编码,指定的编码与文件的编码一致,应该不会有乱码的
回复
afeilxc 2009-06-04
read 时是没有问题的,将所有信息以字节流形式读取,如果你在打印时没有设置成中文格式(如:utf-8) 可能虚拟机是以原有格式输出! 所以出现你说的乱码问题!
回复
cgaolei 2009-06-04
[Quote=引用 2 楼 littzh 的回复:]
你好,首先谢谢你的回答。
我问的是JAVA中所有字符都是两个字节表示的,为什么中文乱码,英文不乱码。
[/Quote]

英文字付是一个字节,用ASCII码。
回复
oklinsong 2009-06-04
java中是两个字节表示的,但是你要读的文件不是啊,那里面英文是一个字节,读一个字节就可以,读到流内是
java底层实现的,对程序员来说是看不到的,具体怎么转换的不清楚!
个人理解不知道对不对。
回复
littzh 2009-06-04
你好,首先谢谢你的回答。
我问的是JAVA中所有字符都是两个字节表示的,为什么中文乱码,英文不乱码。
回复
cgaolei 2009-06-04
那是因为byte是8位的,char是16位的。inputstream的确是字节流,每次只能读一个byte,要想读出中文,要每次读两个byte,然后再合成一个char.

如:

byte[2]

char a += byte[0]<<8;
char a += byte[1];

System.out.println(c);
回复
相关推荐
OpenGL-Shader
共六章 1.基础章节,从Shader1.0版本到新的4.5版本,介绍每一个版本中特性的用法; 2.Tesslattion Shader应用/基础案例分析 3.Gemotry Shader应用/基础案例分析 4.Compute Shader应用/基础案例分析 5.通过大量案例讲解分析/结合新特性,介绍用法 6.性能调优,如果借助shader加速应用,让你的程序支撑百万级别的场景对象轻松应对 全面解析OpenGL Shader语言,从1.0到4.5版本,全面掌握shader编成,并能够熟练的应用
QT实战之监控系统
本课程基本Qt for windows平台下开发的监控界面程序,支持添加摄像头播放监控画面,支持1、4、9、16分屏显示,通过封装播放器,可以支持多协议,本地视频多种播放方式,随意封装播放器功能,并且可在此基础上对本次监控系统进行二次开发,友好的界面操作,支持系统拖盘,全屏多分屏显示等。 本课程一步一步的实现整个监控系统页面,最终实现整个监控系统,通过学习本教程能快速学会Qt for windows下QT界面开发,并且对于流媒体有一定的了解,通过封装三方播放器可以轻松学会实现封装自己所需要的功能。另外本教程基于实际项目做课程演讲开发,可以学到真实项目开发经验。
rtl8188eu_USB_linux.tar.gz
TP-LINK TL-WN725N V2 Linux 驱动安装
Control-flow Enforcement Technology Preview 2.0 spec
Intel CFI技术手册。 Intel CFI从CPU层次检测和防止ROP/JOP攻击,主要包含shadow stack和endbranch两项技术。 比软件层面的防御方法,如微软的CFG,更有效。目前Intel最新编译器已经支持此技术
后备电池及储能电池巡检白皮书.pdf
后备电池及储能电池巡检白皮书,施耐德电气主编的,数据中心电池巡检白皮书。
CListControl设置颜色
CListControl类派生,设置单元格颜色,丰富功能
Linux系统管理员/网络管理员(PDF版)
两本非常好的Linux系统学习的书 系统管理主要介绍Linux系统的结构、管理、命令等 网络管理主要从网络协议角度出发阐述Linux的网络功能
STM32F103中文数据手册
这个里面包含了STM32F103的各种型号的数据手册,方面理解
WPF中用于嵌入其他进程窗口的自定义控件(AppContainer)
WPF中用于嵌入其他进程窗口的自定义控件(AppContainer) 具体见博文:http://blog.csdn.net/zzzwwwppp11199988899/article/details/78131292
掌握C语言链表
链表是一种使用极其广泛的数据结构,它也可以用来作为实现栈、队列等数据结构的基础,链表没有像数组需要预先知道数据大小的缺点,可充分利用计算机内存,实现动态灵活的内存管理。除非需要频繁的通过下标来随机访问各个数据,否则数组都可以用链表代替。链表作为C语言数据结构的难点,更是面试中必考的知识点。 此课程是黄强老师针对C语言链表的专题课程,通过对链表通俗的讲解,结合简单易懂的代码,帮助学员对链表快速的理解,并讲结合真实企业开发中链表常用的算法技巧,从而帮助学员高效,快速、灵活的掌握链表这一难点!
MSP430_RTC模块学习总结
这是自己在学习MSP430时,对RTC模块的总结,希望可以帮助刚入门者
QT/C++从新手到老手系列之QT基础篇
本系列课程励志于带领你学习QT5/C++,从开发环境(QTCreator和VS2013两种)搭建到实际项目实战,从入门到精通。每一个部分均有理论知识介绍、接口讲解、实例代码讲解,讲解过程中不断穿插老师在开发过程中遇到的问题及解决方法。本阶段主要学习Qt开发环境搭建(QTCreator及VS)、程序的发布、GUI控件的属性、方法、布局管理、容器类、QT事件处理等,学完本阶段后可以开发小型的应用程序。 本阶段主要完成Qt开发环境搭建、程序的开发和发布、基于Widget的图形控件属性和方法的使用、布局管理、容器类、QT事件处理等几个方面知识的学习,通过上述几个方面知识的学习,可以开发一个小型的应用程序。
CIET-2019-0504 数据中心运维管理人才标准.pdf
数据中心运维管理,人才标准,欢迎查看共同学习。
轻松学Linux系列课程
从0开始,Linux云计算系列课程,包含Linux初级运维、运维、初级架构师、云计算运维及开发..... a:0:{}
webrtc demo使用方法
谷歌webrtc demo的使用教程,webrtc源代码自行从官网下载,该教程只给出了源代码详细的使用方法,包括如何编译
朴素贝叶斯算法做文本分类-代码
https://blog.csdn.net/zzZ_CMing/article/details/89478436 朴素贝叶斯算法做文本分类,用的是谭松波酒店语料。
FANUC的3210密码破解软件
FANUC 3210 密码破解软件,读取SRAM备份文件,不需要注册,完全免费。
PDB符号文件查看工具 symview,pdbxtract
PDB符号文件查看工具, 包含2个工具symview 和pdbxtract symview可查看文件所有原始信息 pdbxtract 可方便查看结构体等信息, 可导出头文件或xml
QT实战之监控回看系统
本课程基本Qt for windows平台下开发的监控回看界面程序,通过选择界面上的时间和日期可以准确定位观看过去的某一年某一日某个时刻的监控画面,支持对接第三方海康设备的功能,同时也能对于学习QT有很大的帮助。 学会对接第三方设备,学会QT开发,学会界面布局,学会界面设计。
FANUC PMC密码破解程序
FANUC 31I PMC密码破解程序 用于OID,30I,31I等FANUC的密码破解
SIEMENS 840D SL调试手册.rar
里面含有840dsl的全部维修,调试,使用手册和资料,编程手册,报警诊断手册,PLC维修调试,系统报警代码,HMI高级手册.等.
(亲测正确版)ASP.NET-c#-捕捉网页快照-网站截图-网站缩略图
(亲测正确版)ASP.NET-c#-捕捉网页快照-网站截图-网站缩略图 ★★★★★★★★★★★★★★★★★★★★★★★★★★★ 建立网站缩略图源码 网页快照ASP.NET网站截图 网页快照ASP.NET c# 输入网址获取网站图片 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 网上流传了很多网站缩略图的asp.net,但是都无法使用,本人亲测,该代码进行优化,速度快,效率高,占内存非常少。
FANUC B-64113C_01 0i-C 0i Mate-C连接说明书(硬件)册
FANUC B-64113C_01 0i-C 0i Mate-C连接说明书(硬件)册
jquery自己写的文件目录
jquery自己写的文件目录,HttpServlet+js+jsp
B站王红元(codewhy)vue课件以及笔记
B站王红元(codewhy)vue课件以及笔记
Winfrom通用权限管理系统
Winfrom框架,动态生成菜单界面,附带数据库。纯手写,仅供学习参考,希望.net 程序员越来越好。 博客地址:https://blog.csdn.net/zzzzzzzert 有问题留言,互相学习交流
初级学习ArcGIS Engine视频课程
全局讲解ArcGIS Engine开发课程,初级学习 学会ArcGIS Engine 二次开发
常见密码的解密方法
一些常见的,密码的解密方法。
matlab相机标定源码
matlab标定工具箱源代码和使用实例 计算相机参数矩阵、径向畸变参数和切向畸变参数
win7/8/10 CSF文件专用播放器——科健csf播放器
很多人反馈在win10下无法正常播放csf文件,附件中为科健最新CSF文件播放器,可以支持Windos7/8/10 系统,可以在win10下正常播放
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2009-06-04 09:21
社区公告
暂无公告