zoukankan      html  css  js  c++  java
  • 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();


  • 相关阅读:
    基于密度的optics聚类算法
    unicode编码和utf-8编码详解
    聚类分析之k-prototype算法解析
    python学习笔记之正则表达式1
    聚类分析之模糊C均值算法核心思想
    Matlab编程笔记之GUI程序转exe
    Matlab学习笔记之安装教程
    SVPWM原理分析-基于STM32 MC SDK 5.0
    Allego Quick Reports
    SVPWM-实战
  • 原文地址:https://www.cnblogs.com/archermeng/p/8587542.html
Copyright © 2011-2022 走看看