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

  在简体中文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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 CSV 文件转换为 UTF-8 编码格式,可以按照以下步骤操作: 1. 使用 Python 内置的 `csv` 模块读取 CSV 文件。例如: ``` import csv with open('file.csv', 'r', encoding='原始编码格式') as f: reader = csv.reader(f) for row in reader: # 处理每一行数据 ``` 2. 将读取到的数据转换为 UTF-8 编码格式。例如: ``` import csv with open('file.csv', 'r', encoding='原始编码格式') as f: reader = csv.reader((line.encode('utf-8') for line in f), delimiter=',') for row in reader: # 处理每一行数据 ``` 在这个示例中,我们使用了一个生成器表达式将每一行数据转换为 UTF-8 编码格式,并将转换后的数据传递给 `csv.reader` 对象。此外,我们还指定了 CSV 文件中使用的分隔符为逗号(默认值为英文半角逗号)。 3. 对转换后的数据进行处理或者写入的 CSV 文件。例如: ``` import csv with open('file.csv', 'r', encoding='原始编码格式') as f: reader = csv.reader((line.encode('utf-8') for line in f), delimiter=',') with open('new_file.csv', 'w', encoding='utf-8', newline='') as f_out: writer = csv.writer(f_out) for row in reader: # 处理每一行数据 # ... # 将处理后的数据写入的 CSV 文件 writer.writerow(processed_row) ``` 在这个示例中,我们使用了一个的 `csv.writer` 对象将处理后的数据写入到一个的 CSV 文件中。需要注意的是,我们在打开文件时指定的编码格式为 UTF-8,并将 `newline` 参数设置为空字符串,以避免写入的数据中出现多余的空行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值