以当前默认file encoding读取文件然后以utf-8写入新文件

来源:互联网 发布:名片扫描软件哪个好 编辑:程序博客网 时间:2024/05/17 20:23

  在简体中文Windows上, 默认启动的Java程序如果没有加上设置file encoding,那么默认生成的文件(写文件时没有指定编码的那种)是GBK编码的,这样的文件传输到其它非GBK编码的机器上会无法正常显示。 需要将其转换为utf-8格式的,这样就能在所有机器上以utf-8打开正常显示。


    下面这段代码是如何将文件从当前默认的encoding读取后以utf-8写入


       读取当前的file encodning  (注意xxx.java文件是utf-8编码)

          String fileEncoding = System.getProperty("file.encoding");
          System.out.println("FileEncoding:" + fileEncoding);

         try {         String filePath= "d:\\dir1\\file1.txt";             File readfile = new File(filePath);             if (readfile.isFile() && readfile.exists()) {             //按照当前默认的file encoding独舞文件                 InputStreamReader read = new InputStreamReader(new FileInputStream(readfile));                 System.out.println("File Encoding:["+ read.getEncoding());                 BufferedReader bufferedReader = new BufferedReader(read);                 String lineTxt = null;                  StringBuilder sb = new StringBuilder();                 while ((lineTxt = bufferedReader.readLine()) != null) {                 sb.append(lineTxt).append("\n");                 }                 read.close();                 System.out.println("New:" + sb.toString());                                  File fileWriter = new File(filePath + "a");                 if (fileWriter != null && fileWriter.exists()) {                     System.out.println("File["+fileWriter.getAbsolutePath() + "] already exists, Will not create it");                 }                 else {                     System.out.println("File["+fileWriter.getAbsolutePath() + "] does not exists, create it");                     //以utf-8写入文件                     Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileWriter), "UTF-8"));                     try {                         out.write(sb.toString());                     } finally {                         out.close();                     }                 }                              }              else {                 System.out.println("File:["+ readfile.getAbsolutePath() +"] does non exist");             }                      } catch (Exception e) {             System.out.println("error");             e.printStackTrace();         }


   可以在启动java程序时改变file enconding

    set JAVA_OPTS=-Xmx512m    -Dfile.encoding=UTF-8 

     或者java -jar  xxxx  -Dfile.encoding=UTF-8 



1 0
原创粉丝点击