[size=medium][color=blue][b]1.按文件的编码方式utf8进行相应的解码显示和编码写入(T.java编码方式utf8)[/b][/color][/size]
[color=brown][b]要进行读写的文件T.java使用utf8编码方式进行编码[/b][/color]
[b]内容:(按utf8显示)[/b]
[color=indigo]//你好世界杯[/color]
[b]执行下面代码[/b]
[b]console端显示[/b]
[color=indigo]//你好世界杯
我爱世界杯
[/color]
[b]写入的文件T.java显示,(按照T.java的编码方式utf8)[/b]
[color=indigo]//你好世界杯我爱世界杯[/color]
[size=medium][color=blue][b]2.不按文件的编码方式gbk进行相应的解码显示和编码写入[/b][/color][/size]
[color=brown][b]要进行读写的文件T.java使用的是gbk编码方式进行编码[/b][/color]
[b]内容:(按gbk显示)[/b]
[color=indigo]//你好中国[/color]
[b]执行上面的代码,不按文件的真实编码方式解码和编码写入[/b]
[b]console端显示[/b]
[color=indigo]//����й�
我爱世界杯
[/color]
[b]原因:乱码是因为用utf8界面gbk乱码,下面的显示正确是因为显示的java的unicode[/b]
[b]写入的文件T.java显示,(按照T.java的编码方式gbk)[/b]
[color=indigo]//你好中国鎴戠埍涓栫晫鏉�[/color]
[b]原因:你好中国不乱码是因为:就是用gbk编码的,用gbk解码就不会乱码
后面是新增加的,编码方式是utf8,用gbk解码显示是乱码
[/b]
[color=red][b]
所以:我可以果断判断,如果用utf8解码显示,应该原有的用gbk编码的是乱码,新增加的是正常的
如下:[/b][/color]
[color=indigo]//����й�我爱世界杯[/color]
[b][size=large][color=indigo]注意:java读取和写入文件时,如果不指定编码解码方式,编码解码方式和你在eclipse中设置的页面编码解码方式一致,可以通过点击java文件右键--》properties--》text file encoding来查看。这个很重要baby。
可以通过下面的语句,查看,jvm默认编码解码方式,即你设置的页面属性中的编码方式
System.out.println(Charset.defaultCharset());
其次:如果是页面文件,在eclipse中设置的文件编码属性时和页面内设置的编码属性同步变动的如图:也就是说jsp等页面文件可以在页面内设定页面的编码属性
[img]http://dl2.iteye.com/upload/attachment/0099/2363/07198ba0-9bf7-3f92-88d3-b486fdc46e3e.jpg[/img]
[/color][/size][/b]
[color=brown][b]要进行读写的文件T.java使用utf8编码方式进行编码[/b][/color]
[b]内容:(按utf8显示)[/b]
[color=indigo]//你好世界杯[/color]
[b]执行下面代码[/b]
package com.hank.comments;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Test {
/**
* 由于windows的默认字符集是gbk,所以windows下的文件另存为utf8,代表用utf8编码方式来编码gbk字符集的文件
* 显示时,要显示gbk的字符集才能看到原始的内容,所以要用utf8解码方式来解码,解码后的文件时gbk字符集的文件
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//BatchComments.java 的编码方式是utf8,在读取数据的时候也,也用utf8解码,写入时也用utf8编码后写入
//如果文件时utf8编码的,用gbk解码会乱码,同样,utf8编码的,写入时用gbk,也是乱码
File file = new File("D:/Workspaces/MyEclipse 10/ttttt/src/T.java");
String characterSet = "utf8";//file用什么编码方式存的,就用什么编码方式去读和写,如这里是utf8
//1.读取过程
InputStream is = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(is, characterSet);//文件什么编码方式存的,就用什么编码方式读取
BufferedReader br = new BufferedReader(isr);
String str1 = null;
while((str1 = br.readLine()) != null) {
System.out.println(str1);
}
br.close();
isr.close();
is.close();
//2.写入过程
FileWriter fw = new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(fw);
//把要写入的字符串都按照要写入文件的编码方式生成,再写入
String str2 = new String("我爱世界杯".getBytes(characterSet), characterSet);
System.out.println(str2);
bw.write(str2);
bw.flush();
bw.close();
fw.close();
}
}
[b]console端显示[/b]
[color=indigo]//你好世界杯
我爱世界杯
[/color]
[b]写入的文件T.java显示,(按照T.java的编码方式utf8)[/b]
[color=indigo]//你好世界杯我爱世界杯[/color]
[size=medium][color=blue][b]2.不按文件的编码方式gbk进行相应的解码显示和编码写入[/b][/color][/size]
[color=brown][b]要进行读写的文件T.java使用的是gbk编码方式进行编码[/b][/color]
[b]内容:(按gbk显示)[/b]
[color=indigo]//你好中国[/color]
[b]执行上面的代码,不按文件的真实编码方式解码和编码写入[/b]
[b]console端显示[/b]
[color=indigo]//����й�
我爱世界杯
[/color]
[b]原因:乱码是因为用utf8界面gbk乱码,下面的显示正确是因为显示的java的unicode[/b]
[b]写入的文件T.java显示,(按照T.java的编码方式gbk)[/b]
[color=indigo]//你好中国鎴戠埍涓栫晫鏉�[/color]
[b]原因:你好中国不乱码是因为:就是用gbk编码的,用gbk解码就不会乱码
后面是新增加的,编码方式是utf8,用gbk解码显示是乱码
[/b]
[color=red][b]
所以:我可以果断判断,如果用utf8解码显示,应该原有的用gbk编码的是乱码,新增加的是正常的
如下:[/b][/color]
[color=indigo]//����й�我爱世界杯[/color]
[b][size=large][color=indigo]注意:java读取和写入文件时,如果不指定编码解码方式,编码解码方式和你在eclipse中设置的页面编码解码方式一致,可以通过点击java文件右键--》properties--》text file encoding来查看。这个很重要baby。
可以通过下面的语句,查看,jvm默认编码解码方式,即你设置的页面属性中的编码方式
System.out.println(Charset.defaultCharset());
其次:如果是页面文件,在eclipse中设置的文件编码属性时和页面内设置的编码属性同步变动的如图:也就是说jsp等页面文件可以在页面内设定页面的编码属性
[img]http://dl2.iteye.com/upload/attachment/0099/2363/07198ba0-9bf7-3f92-88d3-b486fdc46e3e.jpg[/img]
[/color][/size][/b]