转码的几种方式

来源:互联网 发布:定义结构体数组 编辑:程序博客网 时间:2024/05/21 14:01

1.字符串转码---适用于小批量转码

String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");



2.IO流方式-----适用于大批量转码

package com.lrq.entity;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;/** * 将批量的gbk的乱码文件转换到utf8 将gbk的代码放到srcDir之下,转码置destDir之下 */public class UTF8Parser {/** *  *  */protected static File srcDir = new File("E:/develop/srcDir/"); // 待转码的GBK格式文件夹protected static File destDir = new File("E:/develop/destDir/"); // 转码成UTF8的目标文件夹public static void main(String[] args) {System.out.println("----start----");// 1.判断是目录if (!srcDir.isDirectory()) {return;}// 2.遍历所有目录File[] fs = srcDir.listFiles();// 创建目标目录if (!destDir.exists()) {destDir.mkdirs();}try {new UTF8Parser().parse(fs, destDir.getPath());} catch (IOException e) {e.printStackTrace();}System.out.println("-----end-----");}/** * 目录迭代遍历;文件夹目录重新生成,文件转码重建 */private void parse(File[] fs, String folder) throws IOException {for (File file : fs) {if (!file.isDirectory()) {if (file.getName().lastIndexOf(".java") < 0) {File destFile = new File(folder, file.getName());destFile.createNewFile();continue;}File destFile = new File(folder, file.getName());parse2UTF8(file, destFile);} else {File newFolder = new File(file.getPath().replace(srcDir.getPath(), destDir.getPath()));newFolder.mkdirs();parse(file.listFiles(), newFolder.getPath());}}}/**  * 转码UTF8 */private void parse2UTF8(File file, File destFile) throws IOException {StringBuffer msg = new StringBuffer();// 读写对象PrintWriter ps = new PrintWriter(new OutputStreamWriter(new FileOutputStream(destFile, false), "utf8"));BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "gbk"));// 读写动作String line = br.readLine();while (line != null) {msg.append(line).append("\r\n");line = br.readLine();}ps.write(msg.toString());br.close();ps.flush();ps.close();}}


1 0
原创粉丝点击