源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java IO文件编码转换实现代码

  • 时间:2020-10-06 08:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java IO文件编码转换实现代码
对IO操作真心不是很懂。。。对编码、乱码也是一知半解。。。今天遇到了一个需求,要求将一个文件进行编码转换,并且返回编码后的字符串,如原本的GBK编码,转换为UTF-8 其中这个BytesEncodingDetect 类就不贴了。主要用了里面的获取文件编码格式。 刚开始试了直接在源文件修改编码方式,采用URLEncoder和URLDecoder进行转换,却迟迟不行。出现了中文奇数最后一个字乱码 百度找了解决方法,都未果,只好采用我的思路是:先读取源文件的内容,存放到StringBuffer里面,然后删除源文件,再重新new一个文件,再以另一中编码形式存放进去。 查看编码后效果:注意不要在eclipse查看效果,eclipse以一种编码形式查看而已,所以可以在浏览器端查看如html文件,查看指定编码可以右键---编码,以此来判断是否成功。
[u]复制代码[/u] 代码如下:
package com.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.URLDecoder; import java.net.URLEncoder; public class Transcoding {  private BytesEncodingDetect encode = new BytesEncodingDetect();  public Transcoding() {  }  /**   * 编码转换   * @param toCharset 要转换的编码   * @param path 要转换的文件路径   * @return   * @throws Exception   */  public String encoding(String toCharset, String path) throws Exception{   File srcFile = new File(path);   int index = encode.detectEncoding(srcFile);   String charset = BytesEncodingDetect.javaname[index];   // 编码相同,无需转码   if (charset.equalsIgnoreCase(toCharset)) {    return "编码一样,无需转换";   }   InputStream in = new FileInputStream(path);   BufferedReader br = new BufferedReader(     new InputStreamReader(in, charset));   StringBuffer sb = new StringBuffer();   String s1;   while ((s1=br.readLine())!=null) {    String s = URLEncoder.encode(s1, toCharset);    sb.append(s+"\r\n");//一行+回车   }   br.close();   srcFile.delete();//删除原来文件   //重新以新编码写入文件并返回值   File newfile = new File(path);//重新建原来的文件   newfile.createNewFile();   OutputStream out = new FileOutputStream(newfile);   OutputStreamWriter  writer = new OutputStreamWriter(out, toCharset);   BufferedWriter bw = new BufferedWriter(writer);   bw.write(URLDecoder.decode(sb.toString(), toCharset));   String result = URLDecoder.decode(sb.toString(), toCharset);   bw.flush();//刷到文件中   bw.close();   return result;  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部