编码问题

/*
FileReader可以读取默认编码格式(UTF-8)的文件
读取系统默认编码(GBK中文)会产生乱码

*/

public class demo04FileReader {
public static void main(String[] args) throws IOException {
    FileReader fr =new FileReader("D:\\IdeaProjects\\basic-code\\aaaa\\我是GBK.txt");
    int len =0;
    while ((len = fr.read())!=-1){
        System.out.println((char) len);
    }
    fr.close();
}
}

OutputStreamWriter

/*
OutputStreamWriter 继承Writer
OutputStreamWriter:字符流通向字节流的桥梁,可使用指定的charset将要写入流中的字符编码成字节
共性成员方法
writer(int c)写入单个字符
writer(char[] cbuf)写入字符数组
abstract void write(char[] cbuf.int off,int len)写入字符数组的某一部分
write(String str)写入字符串
write(String str,int off,int len)
void flush
void close
构造方法
1、OutputStreamWriter(OutputStream out)
创建使用默认字符编码的 OutputStreamWriter。
2、OutputStreamWriter(OutputStream out, String charsetName)
创建使用指定字符集的 OutputStreamWriter。
参数:OutputStream out字节输出流,用来写转换之后的字节到文件中
String charsetName指定的编码表名称,不区分大小写,可以是utf-8/UTF-8/GBK ,不使用默认utf-8
使用步骤
1、创建一个OutputStreamWriter对象
2、使用方法write,把字符转换为字节存储到缓冲区中
3、flush刷新到文件中
4、close
*/

public class demo05OutputStreamWriter {
public static void main(String[] args) throws IOException {
    //write_utf_8();
    write_gbk();
}
/*
使用转换流写UTF-8格式的文件
 */
private static void write_utf_8() throws IOException {
    OutputStreamWriter opw = new OutputStreamWriter(new FileOutputStream("D:\\IdeaProjects\\basic-code\\aaaa\\utf-8.txt"),"utf-8");
    opw.write("你好");
    opw.flush();
    opw.close();
}
private static void write_gbk() throws IOException {
    OutputStreamWriter opw = new OutputStreamWriter(new FileOutputStream("D:\\IdeaProjects\\basic-code\\aaaa\\Gbk-8.txt"),"gbk");
    opw.write("你好");
    opw.flush();
    opw.close();
}
}

InputStreamReader

/*
InputStreamReader 继承 Reader
继承的共性成员方法()
int read
int read(char[] cbuf)
void close
构造方法:
InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。
使用步骤:
1、创建InputStreamReader对象
2、使用InputStreamReader对象的方法read
3、释放资源
注意事项:
1、构造方法中指定的编码表名称和文件的编码相同,否则会发生乱码
*/

public class demo06InputStreamReader {
public static void main(String[] args) throws IOException {
    read_utf_8();
}
private static void read_utf_8() throws IOException {
    InputStreamReader isr =new InputStreamReader(new FileInputStream("D:\\IdeaProjects\\basic-code\\aaaa\\utf-8.txt"),"utf-8");
    int len =0;
    while ((len= isr.read())!=-1){
        System.out.println((char) len);
    }
    isr.close();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值