Java 解决读写本地文件中文乱码的问题

 更新时间:2017年01月24日 14:03:24   投稿:lqh  
这篇文章主要介绍了Java 解决读写本地文件中文乱码的问题的相关资料,需要的朋友可以参考下

Java 解决读写本地文件中文乱码的问题

前言:

在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码。原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式。通常,假如自己不修改的话,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码方式),而IDE中Encode不修改的话,默认是utf-8的编码,这就是为什么会出现乱码的原因。当在OS下手工创建并写入的txt文件(gbk),用程序直接去读(utf-8),就会乱码。为了避免可能的中文乱码问题,最好在文件写入和读出的时候显式指定编码格式。

按行读取本地文件:

public static String readFile(String fileName) {
    String fileContent = "";
    try {
      File f = new File(fileName);
      if (f.isFile() && f.exists()) {
        InputStreamReader read = new InputStreamReader(
            new FileInputStream(f), "gbk");
        BufferedReader reader = new BufferedReader(read);
        String line;
        while ((line = reader.readLine()) != null) {
          fileContent += line+"\n";
        }
        read.close();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    return fileContent;
  }

写入本地文件:

public static void writeFile(String fileName, String fileContent) {
    try {
      File f = new File(fileName);
      if (!f.exists()) {
        f.createNewFile();
      }
      OutputStreamWriter write = new OutputStreamWriter(
          new FileOutputStream(f), "gbk");
      BufferedWriter writer = new BufferedWriter(write);
      writer.write(fileContent);
      writer.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • SpringBoot集成antlr实现词法和语法分析

    SpringBoot集成antlr实现词法和语法分析

    Antlr4 是一款强大的语法生成器工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件,基本上是当前 Java 语言中使用最为广泛的语法生成器工具,本文给大家介绍了SpringBoot集成antlr实现词法和语法分析,需要的朋友可以参考下
    2024-06-06
  • Feign实现多文件上传,Open Feign多文件上传问题及解决

    Feign实现多文件上传,Open Feign多文件上传问题及解决

    这篇文章主要介绍了Feign实现多文件上传,Open Feign多文件上传问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • springBoot中的properties配置解析

    springBoot中的properties配置解析

    这篇文章主要介绍了springBoot中的properties配置解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java实现的AES秘钥生成算法示例

    java实现的AES秘钥生成算法示例

    这篇文章主要介绍了java实现的AES秘钥生成算法,结合实例形式分析了AES秘钥生成算法原理与实现技巧,需要的朋友可以参考下
    2017-01-01
  • 关于SpringBoot2.7.6连接nacos遇到的一些问题

    关于SpringBoot2.7.6连接nacos遇到的一些问题

    这篇文章主要介绍了关于SpringBoot2.7.6连接nacos遇到的一些问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Java中输出字符的ASCII值实例

    Java中输出字符的ASCII值实例

    这篇文章主要介绍了Java中输出字符的ASCII值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 浅析Java 对象引用和对象本身

    浅析Java 对象引用和对象本身

    这篇文章主要介绍了Java 对象引用和对象本身的相关资料,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-08-08
  • IntelliJ IDEA中程序包org.slf4j找不到的解决

    IntelliJ IDEA中程序包org.slf4j找不到的解决

    这篇文章主要介绍了IntelliJ IDEA中程序包org.slf4j找不到的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • springboot 启动如何修改application.properties的参数

    springboot 启动如何修改application.properties的参数

    这篇文章主要介绍了springboot 启动如何修改application.properties的参数方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java8默认方法Default Methods原理及实例详解

    Java8默认方法Default Methods原理及实例详解

    这篇文章主要介绍了Java8默认方法Default Methods原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论