• XML文件读写编码不是UTF-8的问题


    FileWriter和FileReader在写、读文件时,使用系统当前默认的编码方式。
    在中文win下encoding基本是GB2312,在英文win下基本是ISO-8859-1。所以要创建一个UTF-8的文件,使用FileWriter是不行的。
    FileWriter和FileReader都不支持通过参数指定编码方式,而OutputStreamWriter和InputStreamReader可以。这两个类从名字上就可以看到是字节流和字符流的组合,实际上也是连接两者的桥梁。

    FileReader读取文件的过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来解码,然后在UTF-8 -> GBK -> UTF-8的过程中编码出现损失,造成结果不能还原最初的字符。


    写文件示例代码:

    OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");
    out.write("<?xml version=/"1.0/" encoding=/"utf-8/"?><a>Hello world</a>");
    out.flush();
    out.close();

    读文件示例代码:

    FileInputStream fis = new FileInputStream(FILENAME);
    InputStreamReader isr = new InputStreamReader(fis,CHARSET);
    BufferedReader br = new BufferedReader(isr);
    StringBuffer content = new StringBuffer();
    String str2 = br.readLine();
    while (str2 != null) {
        content.append(str2);
        str2 = br.readLine();
    }
    br.close();
    isr.close();
    fis.close();


  • 相关阅读:
    Java代码的执行顺序一
    面试套路-技术需求
    常用数据库的分页实现
    真假分页优缺点
    获取一些系统和用户的通用属性
    反射的使用
    sql复制表数据的方法
    跨服务器的sql使用
    sql 随机数
    常用正则
  • 原文地址:https://www.cnblogs.com/archermeng/p/8587542.html
Copyright © 2020-2023  润新知