Java中以字符流形式操作文件中的编码问题
来源:互联网 发布:产品设计所需软件 编辑:程序博客网 时间:2024/06/07 13:27
参考《编码解码模型和实现》,以字符流形式操作文件的时候,一定要指定正确的编码方案,否则会出现乱码等问题。
现在有一个文件a.txt,文件内容为“你好,Java程序”,采用UTF-8编码。接下来做2个实验。
将字符流写入文件中,做2个实验。
1、实验1
实验代码:
以字符流形式操作文件包括两种情形:以字符流的形式读取文件内容,将字符流写入文件中。
现在有一个文件a.txt,文件内容为“你好,Java程序”,采用UTF-8编码。接下来做2个实验。
1、实验1
实验代码:
package com.dslztx;import java.io.*;import java.nio.charset.Charset;public class Encoding { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt"), Charset.forName("utf-8"))); String line; while ((line = reader.readLine()) != null) System.out.println(line); }}
实验结果:
2、实验2
实验代码:
package com.dslztx;import java.io.*;import java.nio.charset.Charset;public class Encoding { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt"), Charset.forName("gbk"))); String line; while ((line = reader.readLine()) != null) System.out.println(line); }}
实验结果:
现在有一个文件b.txt,文件内容如下,采用UTF-8编码。接下来做2个实验。
你好你好这是第一行#FooterJava程序你好这是第二行
3、实验3
实验代码:package com.dslztx;import java.io.*;import java.nio.charset.Charset;import java.util.Scanner;public class Encoding { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(new File("b.txt"), "utf-8"); scanner.useDelimiter("\\r\\n#Footer\\r\\n"); while (scanner.hasNext()) System.out.println(scanner.next()); }}
实验结果:
4、实验4
实验代码:package com.dslztx;import java.io.*;import java.nio.charset.Charset;import java.util.Scanner;public class Encoding { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(new File("b.txt"), "gbk"); scanner.useDelimiter("\\r\\n#Footer\\r\\n"); while (scanner.hasNext()) System.out.println(scanner.next()); }}
实验结果:
由于乱码,导致scanner.hasNext()返回值为false
将字符流写入文件中,做2个实验。
1、实验1
实验代码:
package com.dslztx;import java.io.*;import java.nio.charset.Charset;import java.util.Scanner;public class Encoding { public static void main(String[] args) throws IOException { BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c.txt"), Charset.forName("utf-8"))); writer.write("你好,Java程序"); writer.close(); }}实验结果:
查看c.txt文件的字节流如下图所示
2、实验2
实验代码:package com.dslztx;import java.io.*;import java.nio.charset.Charset;import java.util.Scanner;public class Encoding { public static void main(String[] args) throws IOException { BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c.txt"), Charset.forName("gbk"))); writer.write("你好,Java程序"); writer.close(); }}实验结果:
当没有明确指定需要使用的字符编码方案时,Java程序通过“java.nio.charset.Charset.defaultCharset().name()”语句来获取默认的字符编码方案,该语句返回的值跟运行Java程序的操作系统的设置有关,在有些操作系统上,该语句返回值可能是UTF-8;在有些操作系统上,该语句返回值可能是GBK;在有些操作系统上,该语句返回值可能是除了UTF-8和GBK以外的其他字符编码方案。这样子,程序的可移植性大大降低。
0 0
- Java中以字符流形式操作文件中的编码问题
- Java中以字符流形式操作文件中的编码问题
- java以字节流形式读写文件
- jvm中编码问题以及java操作文件中的编码问题
- JAVA中的字符编码操作
- ANDROID以流形式上传文件
- Java中字符编码问题
- java导出文件之Excel(CSV)下并以流形式输出
- java中的字符编码问题,四篇文章
- java web开发中的字符编码问题。
- 字符编码和Java中的乱码问题
- 字符编码和Java中的乱码问题
- Java中以指定编码方式读取字符流
- JAVA字符编码系列三:Java应用中的编码问题
- JAVA字符编码系列三:Java应用中的编码问题
- JAVA字符编码系列三:Java应用中的编码问题
- JAVA字符编码系列三:Java应用中的编码问题
- JAVA字符编码系列三:Java应用中的编码问题
- 枚举(java.long包中的常用类之一)
- xib中设置控件的边框以及圆角
- 未能加载文件或程序集“MySql.Web.v20, Version=6.9.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”或它的某一个依赖
- Seek the Name, Seek the Fame
- 搜索引擎与SEO的纽带——你应该知道的事:网络爬虫
- Java中以字符流形式操作文件中的编码问题
- 暑期学校ACM之旅
- C++ 记录程序运行时间
- 网站架构模式
- 欢迎使用CSDN-markdown编辑器
- ViewPager 入门三---详解四大函数
- Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs
- 测绘&遥感&地信 国内外期刊大全
- ViewPager 详解(四)---PagerTabStrip与PagerTitleStrip添加标题栏的异同