`

java 读写Properties文件,不会出现中文乱码

    博客分类:
  • java
阅读更多

public class Test {

 public static void main(String[] args) {

  /*测试读取properties文件
   * OperateProperties op=new OperateProperties();
  op.readProperties("f:/test.properties");
  Map map=op.processProperties();
  
  Set keys=map.keySet();
  String key=null;
  for(Object k:keys){
   key=k+"";
   System.out.println(" "+key+"  "+map.get(key));
  }*/
  
  
  /*  写入一个新的properties文件,save方法会把中文转换成unicode编码,不会出现中文乱码
  OperateProperties op2=new OperateProperties();
  op2.writeProperties("f:/testSave.properties");*/
  
  /*
   * 使用list方法写入一个properties文件,不会出现中文乱码,不会转换成unicode编码,正常显示中文
   * OperateProperties opx=new OperateProperties();
  opx.writeProperties(new File("f:/testList.properties"));*/
  
  //写入一个properties文 件,store()方法,也会把中文转换成unicode编码,不会出现乱码,推荐使用store()
  OperateProperties op2=new OperateProperties();
  op2.writeProperties("f:/testStore.properties");
 }
}

 

 

public class OperateProperties {

 private static Properties prop;
 
 static{
  prop=new Properties(); 
 }
 
 /**
  * 读取properties文件
  *
  * @param fileName
  */
 void readProperties(String fileName){
  FileInputStream is=null;
  try{
   // BufferedInputStream bis=null;
   is=new FileInputStream(fileName); // 字节流容易出现中文乱码
   // bis=new BufferedInputStream(is);
   prop.load(is);
   // prop.load(bis);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  }
   catch (IOException e) {
   e.printStackTrace();
  }
  finally{
    try {
     is.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
  }
  
 }
 
 /**
  * 把properties的值存储到Map
  * @return Map
  */
 Map processProperties(){
  Map map=new Hashtable();
  Set keys=prop.keySet();
  String key=null;
  String str="";
  for(Object k:keys){
   key=k+"";
   map.put(key, prop.getProperty(key));
   
   str=prop.getProperty(key);
  }
  return map;
 }
 
 // 解决中文乱码的方法(读):使用jdk/bin下的native2ascii命令把中文转换成unicode编码
 
 /**
  * 写入Properties文件,会覆盖以前的内容
  * @param fileName 为properties文件
  */
 void writeProperties(String fileName){
  
  FileOutputStream fos=null;
  try{
   File file=new File(fileName);
   if(!file.exists()){
     file.createNewFile();
   }
   fos=new FileOutputStream(file);
   
   prop.setProperty("what.is.you.name", "wangwu");
   prop.setProperty("your.sex", "男");
//   prop.save(fos, "注释");  //写入的中文“注释”为乱码,但是属性值,如果是中文 会转换成unicode,不会出现乱码,推荐使用
   prop.store(fos, "我是一只小鸟");
   
   //prop.storeToXML(fos, "comment"); // 属性值如果是中文,会出现中文乱码,不推荐使用
  }
  catch(FileNotFoundException e){
   e.printStackTrace();
  }
  catch(IOException e){
   e.printStackTrace();
  }
  finally{
   try {
    fos.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
 /**
  * 写入一个properties文件,会覆盖以前的内容
  * 正常显示中文 ,不会把中文转换成unicode
  * @param file
  */
 void writeProperties(File file){
  PrintStream ps=null;
  try{
   if(!file.exists()){
     file.createNewFile();
   }
   ps=new PrintStream(file);
   
   prop.setProperty("what.is.you.name", "wangwu");
   prop.setProperty("your.sex", "男");
   prop.list(ps);
  }
  catch(FileNotFoundException e){
   e.printStackTrace();
  }
  catch(IOException e){
   e.printStackTrace();
  }
  finally{
    ps.close();
  }
 }
}

分享到:
评论
1 楼 xingcxb 2015-10-13  
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采用的是硬编码iso8859-1,麻烦博主抄袭也得要认真一点

相关推荐

    Java读写.properties文件解决中文乱码问题

    本篇文章将深入探讨如何解决Java读写.properties文件时的中文乱码问题。 首先,了解.properties文件的特性。这种文件的默认编码通常是ISO-8859-1,它不支持中文字符。因此,当文件中含有中文时,必须明确指定读写时...

    Java Properties 解决中文乱码和顺序读写.docx

    确保IDE(如IntelliJ IDEA或Eclipse)设置文件编码为UTF-8,同时在读取Properties文件时,通过`InputStreamReader`指定正确的字符集,例如`UTF-8`,避免乱码出现。 例如,以下是一个简单的示例,演示如何读取包含...

    idea中.properties文件中文显示乱码问题的解决 文件中文乱码1

    这些文件可能包含中文字符,但在某些情况下,使用IntelliJ IDEA打开这些文件时可能会出现中文乱码的问题。这主要是由于编码设置不正确或者IDE与文件的实际编码不匹配导致的。下面将详细介绍如何解决这个问题。 首先...

    Java读写properties文件解决中文乱码问题.docx

    Java读写properties文件解决中文乱码问题 Java读写properties文件是在Java开发中一种常见的配置文件读写方式,但是在读写properties文件时,经常会遇到中文乱码问题。下面将详细介绍Java读写properties文件解决中文...

    解决Properties写中文乱码

    1. **设置Java程序读写Properties时的编码**:在使用`Properties.load()`和`Properties.store()`方法读写Properties文件时,可以传入一个`java.io.InputStream`或`java.io.OutputStream`对象,并通过`...

    Java关于中文乱码问题的多种解决方法

    在Java编程中,中文乱码问题是一个常见的困扰,尤其是在处理文件读写、网络传输或数据库操作时。本文将深入探讨几种解决Java中中文乱码问题的方法,并以MyEclipse为开发环境,结合实际示例进行讲解。 1. 文件读写中...

    java操作properties方法

    由于Java默认使用ISO-8859-1编码,而中文字符通常使用UTF-8编码,所以可能会出现乱码。解决这个问题有以下两种方式: 1. **预处理**:在编辑`.properties`文件时,可以使用Java提供的`native2ascii`工具或Eclipse的...

    Java中文乱码浅析及解决方案

    综上所述,解决Java中文乱码问题的关键在于确保整个程序的编码一致性,包括源代码、编译器、运行环境、文件读写、网络传输以及数据库操作等环节。通过细心配置和适当地指定编码,我们可以有效地避免乱码问题,确保...

    java properties应用案例

    - 文件编码:Java默认使用ISO-8859-1编码读取.properties文件,如果文件是UTF-8编码,可能会出现乱码。可以使用`InputStreamReader`和指定的编码解决这个问题。 - 错误处理:在处理文件时,必须处理可能出现的...

    解析Java中文乱码的处理方法

    Java编程语言在处理中文字符时,可能会遇到乱码问题,这通常是由于编码设置不正确或者在数据读写过程中没有统一编码格式导致的。本篇文章将深入探讨Java中处理中文乱码的各种方法,帮助开发者有效解决这类问题。 ...

    java 动态修改配置文件

    本文将深入探讨如何在Java中实现动态修改配置文件,同时解决中文字符编码问题,使得配置文件的读写更加高效和便捷。 首先,我们需要理解Java中的Properties类,它是处理配置文件的标准工具。`java.util.Properties`...

    java中文乱码.rar

    如`properties`文件中的中文乱码,需在读取时指定编码,例如`Properties prop = new Properties(); prop.load(new FileInputStream(file), "UTF-8");` 总结来说,Java处理中文乱码的关键在于确保字符编码的一致性...

    JAVA中文乱码内幕.rar

    7. 配置文件:Java应用中的配置文件(如properties文件)如果含有中文字符,且未指定编码,加载时可能出现乱码。解决办法是在文件头部添加一行表示编码的注释,如"# encoding=UTF-8"。 8. 字符集环境变量:系统环境...

    java 对于文件的读写操作

    在Java编程语言中,文件的读写操作是日常开发中不可或缺的部分。无论是处理配置文件、存储数据还是与其他系统交换信息,文件操作都是基础且重要的。本篇将详细讲解基于给定的`ReadAndPrintXMLFile.java`、`...

    Java Web编程中中文信息处理出现乱码的研究 (1).pdf

    Java Web编程中,中文信息处理出现乱码是一个常见的问题,主要涉及到字符集和编码方法的不匹配。在Java Web环境中,处理中文字符时,如果字符集设置不正确,就会导致乱码现象。以下是对相关知识点的详细解释: 1. ...

    java配置文件 beta v3.0

    "java配置文件 beta v3.0" 提供了对多种常见格式的支持,包括XML、ini、txt以及properties,这大大增加了其适用范围,满足了不同场景下的需求。 XML(Extensible Markup Language)是一种结构化数据存储方式,常...

    myeclipse中文乱码的解决方法

    在读写文件或处理字符串时,代码中应明确指定编码,如Java中的`new String(bytes, "UTF-8")`。 8. **重启MyEclipse** 完成上述设置后,记得重启MyEclipse使设置生效。 9. **中文乱码解决.txt** 压缩包中的`中文...

    WEBSPHERE乱码问题的解决和处理

    根据提供的信息来看,用户在部署了一个WebSphere集群后,发现通过WebService接口传递的数据中,所有的中文字符都显示为问号,同时在日志文件中也出现了乱码的情况。这一现象表明系统在处理中文字符时存在问题。 **...

    java汉字问题解决方案

    当Java程序在读取、处理或输出汉字时,如果编码不一致,就会出现乱码。例如,一个使用GBK编码的文本文件被当作UTF-8编码来读取,或者控制台的输出编码与程序内部设定的编码不同,都可能导致乱码现象。 1. **文件...

    Freemarker 学习笔记一 【乱码解决】

    此外,如果乱码问题出现在文件读写过程中,检查文件的编码设置。例如,如果你在读取CSV文件时遇到乱码,可以使用`BufferedReader`配合`CharsetDecoder`来指定编码: ```java InputStreamReader reader = new ...

Global site tag (gtag.js) - Google Analytics