利用JAVA IO 解决乱码的问题
2009-07-15 15:17
225 查看
前一段时间做一个法国的项目,其中有一个数据同步的问题,客户给我们他们从自己数据库导出的xml格式的数据,我在这边写了一个定时程序,定期检测文件是否更新,并同步xml格式的数据到我们这边的数据库中。当时自己一时疏忽,利用jdom解析文件,但是后面碰到了一个问题,客户的文件过大,将近百兆,同步时会报内存溢出问题。所以采取了一个折中的办法,我把文件进行分解,以两千条数据为一个文件单位,这样问题就初步解决了。
但是后面报出了另外一个问题,客户那面的数据中有法文字符,我分解文件的时候有些字符,如“DE CONSOLES ÉTAGÈRES”会在分解后的文件中出现乱码问题。我原来的思路是利用FileReader构件字符流,然后用BufferedReader装饰FileReader,利用BufferedReader的readline()方法逐行读取,同样的方法利用BufferedWriter,FileReader写入分割文件。
后来我查阅了网上的资料,问题出现在编码集的问题和流与字符的纠葛。
解决方法是利用InputStreamReader和OutputStreamWriter,并设定编码集合,如下:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(xmlFile), Charset.forName("utf-8")));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(xmlPath + "temp1.xml"), Charset.forName("utf-8")));
这样问题就解决了,其实FileReader就是从InputStreamReader继承的,采用的编码格式是系统默认的。
*************************************************************************
编码方式的变迁:Ascii码(一个字节,而且高位不用,能表示128个字符)---》非Ascii码(是欧洲各国都有自己的标准,不能显示东方国家)---》UICODE(只是符号集,规定了符号的二进制代码,但是没有规定怎么存)---》UTF-8(是UICODE的实现之一,是一种变长的编码方式)
但是后面报出了另外一个问题,客户那面的数据中有法文字符,我分解文件的时候有些字符,如“DE CONSOLES ÉTAGÈRES”会在分解后的文件中出现乱码问题。我原来的思路是利用FileReader构件字符流,然后用BufferedReader装饰FileReader,利用BufferedReader的readline()方法逐行读取,同样的方法利用BufferedWriter,FileReader写入分割文件。
后来我查阅了网上的资料,问题出现在编码集的问题和流与字符的纠葛。
解决方法是利用InputStreamReader和OutputStreamWriter,并设定编码集合,如下:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(xmlFile), Charset.forName("utf-8")));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(xmlPath + "temp1.xml"), Charset.forName("utf-8")));
这样问题就解决了,其实FileReader就是从InputStreamReader继承的,采用的编码格式是系统默认的。
*************************************************************************
编码方式的变迁:Ascii码(一个字节,而且高位不用,能表示128个字符)---》非Ascii码(是欧洲各国都有自己的标准,不能显示东方国家)---》UICODE(只是符号集,规定了符号的二进制代码,但是没有规定怎么存)---》UTF-8(是UICODE的实现之一,是一种变长的编码方式)
相关文章推荐
- javaWeb利用Filter解决中文乱码问题
- 【Java IO知识】读取中文乱码问题解决
- 【Java IO知识】读取中文乱码问题解决
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
- 关于利用Jsoup解析HTML中 变成非传统空格或乱码问题解决方法
- java中读取excel文件中字符串乱码问题解决方法
- Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- 标题: 优化 Java 垃圾收集的性能——如何利用 IBM Java 虚拟机检测和解决垃圾收集问题
- Java/JSP中文乱码问题解决心得
- JavaScript利用URL向后台传入中文参数乱码问题解决之道
- java压缩文件,解决中文乱码问题!
- myeclipse如何配置解决JAVA乱码问题
- 解决Java读取File乱码问题
- Java读写.properties文件实例,解决中文乱码问题
- java实现AES加密(解决中文解密后乱码问题,解决传输字符串后解密报错的问题)
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- javadbf 实现解决中文乱码问题
- Ubuntu/Debian下JAVA 中文/图片中文字体乱码显示问题解决方法
- Java 读取写入文件乱码问题解决