测试功能:将指定路径中文件中的内容 转 换成 utf8编码 文件并输出.
注意点:分隔符、获得编码的方式、代码转换的方式、文件的输入输出.
源码展示:
/**
* 将指定路径中文件中的内容 转 换成 utf8编码 文件并输出.
*
*/
public class CharSetTest {
private static final String lineSep = System.getProperty("line.separator"); // 当前系统的换行符.
private static final String userDir = System.getProperty("user.dir"); // 当前工作目录.
private static final String fileSep = System.getProperty("file.separator");// 文件之间的分隔符
public static void main(String[] args) {
String fileInPath = userDir + fileSep + "testDir" + fileSep + "testIn.txt";// 在当前工作路径下的testDir\testIn.txt文件.
String fileOutPath = userDir + fileSep + "testDir" + fileSep + "testOut.txt";// 在当前工作路径下的testDir\testOut.txt文件.
File file = new File(fileInPath);
SinoDetect sinoDetect = new SinoDetect();
int codePage = sinoDetect.detectEncoding(file);
String charset = getCodePage(codePage);
String fileContent = readFromFile(fileInPath, charset);
fileContent = convertToUTF(fileContent, charset);
write2Utf8File(fileContent,fileOutPath,charset,true);
}
/**
* 根据cp的值找到对应的字符集编码,依据 Zhcode开源项目中 Encoding 类中的定义
*
* @param cp
* 字符集
* @return 整型变量对应的字符集
*/
public static String getCodePage(int cp) {
String charset = "UTF8";
if (cp == 0) {
charset = "GB2312";
} else if (cp == 1) {
charset = "GBK";
} else if (cp == 2) {
charset = "GB18030";
} else if (cp == 3) {
charset = "HZ";
} else if (cp == 4) {
charset = "BIG5";
} else if (cp == 6) {
charset = "UTF8";
}
return charset;
}
/**
* 将指定字符集的字符串source转换成编码为"utf8"的目标串
*
* @param source
* 源文件串
* @param charSet
* 源文件串的编码
* @return 转换后的编码
*/
private static String convertToUTF(String source, String charSet) {
if (source == null || source.equals("")) {
return null;
}
source = source.trim();
String target = source;
Zhcode zhcoder = new Zhcode();
if (charSet.equals("GB2312")) {
target = zhcoder.convertString(source, 0, 6);
} else if (charSet.equals("GBK")) {
target = zhcoder.convertString(source, 1, 6);
} else if (charSet.equals("GB18030")) {
target = zhcoder.convertString(source, 2, 6);
} else if (charSet.equals("HZ")) {
target = zhcoder.convertString(source, 3, 6);
} else if (charSet.equals("BIG5")) {
target = zhcoder.convertString(source, 4, 6);
}
return target;
}
/**
* 从 路径filePath 中按 charset编码 读取内容
*
* @param filePath
* 文件路径
* @param charset
* @return 文件中的内容
*/
private static String readFromFile(String filePath, String charset) {
if (!(new File(filePath)).exists()) {
return null;
}
String line = null;
StringBuilder result = new StringBuilder();
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(new FileInputStream(
filePath), charset));
try {
while ((line = in.readLine()) != null) {
result.append(line + lineSep);
}
} catch (IOException e) {
System.out.println(e.toString());
}
} catch (Exception e) {
System.out.println(e.toString());
} finally {
try {
in.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
return result.toString();
}
/**
* 将字符串以 utf8 的形式写出到 filePath 指定的文件
*
* @param source
* 待写入文件的字符串
* @param filePath
* 输出的文件的路径
* @param charset
* 文件的字符集
* @param isAppand
* 文件的字符集 ,如果为 true,则将字节写入文件末尾处,而不是写入文件开始处 ;反之则重新从文件开始处写.
*/
public static void write2Utf8File(String source, String filePath,
String charset, boolean isAppand) {
Writer out = null;
File file = new File(filePath);
file.getParentFile().mkdirs();
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(filePath, isAppand), charset));
try {
out.write(source);
out.flush();
} catch (IOException e) {
System.out.println(e.toString());
}
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
}
附件中为 所需jar包与源码.
参考资料: http://sourceforge.net/projects/zhcode/
分享到:
相关推荐
在本场景中,我们面对的问题是“MFC UTF-8文件批量转成GB2312 解决中文乱码问题”,这涉及到文件的读取、编码转换以及文件的写入操作。 首先,我们需要理解UTF-8和GB2312这两种编码的区别。UTF-8是一种变长的...
批量将任何编码格式的文件转换成UTF-8编码的文件,将工具放到需要转换的文件路径,双击运行,即可批量将路径下的所有文件(包含子文件夹中文件)转换成UTF-8编码的文件, 注意:不要在文件夹下放入无法读取的文件...
*文件编码转换,gbk与utf-8互转 * changeFileCode 方法,4个属性:(需要转换的文件目录,转换后的文件目录,当前文件编码格式,转换成需要的文件编码); * 需要转换的文件目录,转换后的文件目录--可以为同一路径...
在压缩包子文件的文件名称列表中,“utf8TOgb2312”可能是这个转换程序的主程序或者配置文件,它的作用是从UTF-8编码的lrc文件转换为GB2312编码。运行这个程序,用户只需指定源文件路径和目标编码,即可完成批量转换...
2. 双击运行该程序,用户界面会提供一个或多个选项来选择输入文件、输出编码类型(如UTF-8转GB2312)。 3. 指定需要转换的源文件,通常是文本文件或整个文件夹。如果选择文件夹,程序会递归处理其中的所有文本文件。...
本文将详细介绍如何将UTF8格式的TXT文件转换为ANSI格式,并探讨这两种编码的区别。 首先,UTF8(Unicode Transformation Format - 8 bit)是一种广泛使用的字符编码标准,它能够表示Unicode字符集中所有的字符。UTF...
这样每次新建.h,.cpp的时候,就是UTF-8编码了。 记住,是用vs菜单,添加类或者头文件( .h),.cpp文件。 不是自己新建,然后用vs打开 自己新建的话,可以用高级保存功能,另存为UTF-8(带签名)即可。
总的来说,理解和应用这些步骤可以帮助你在VC++2005 MFC项目中有效地处理字符串的编码转换,特别是将字符串从ANSI编码转换为UTF-8编码。这不仅对本地化和国际化非常重要,也是保证软件兼容性和跨平台性的重要一环。
本主题主要探讨“emoj表情对应的utf-8编码”以及如何将iOS传来的emoj码转换为表情图。 UTF-8是一种广泛使用的Unicode字符编码,它可以表示Unicode字符集中所有的字符,包括emoj。每一个emoj都有其特定的Unicode值,...
然后就各方参考,整理出了这一份代码,直接用,直接转码,直接可以将项目中的java文件一键转码,很方便。里面有个test看了就知道怎么操作了。会自动获取文件的编码格式,只需要输入文件路径,需要转码的格式,以及...
一个能够去掉C++头文件中注释并将编码转换为UTF-8的Python脚本,不仅能提高代码的整洁性,还能为项目的国际化和协作带来便利。Python作为一种优秀的编程语言,其在文本处理方面的强大功能和简洁语法,使得它成为完成...
* 将一个字符的UTF8编码转换成Unicode(UCS-2和UCS-4)编码. enc_utf8_to_unicode_one(const unsigned char* pInput, unsigned long *Unic) * 将一个字符的UTF8编码转换成Unicode(UCS-2和UCS-4)编码. 等等
需要了解原始数据的编码方式(如ASCII、UTF-8、UTF-16等),以避免乱码问题。 在实际项目中,可能会使用如protobuf、XML或JSON等序列化库来解析结构化的二进制数据,这些库能帮助我们将复杂的数据结构转换为易于...
易语言提供了“字符串编码转换”命令,可以将已读取的GBK字符串转换成UTF-8编码。这个过程涉及到字节流的处理,GBK编码每个汉字通常占用两个字节,而UTF-8编码根据字符可能占用1到4个字节。 3. 数据写入:转换后的...
4. 执行转换命令,工具会读取GBK编码的文件,并将其内容转换为UTF-8编码,生成新的文件。 5. 完成转换后,检查新文件以确保内容正确无误。 除了转换工具,压缩包中还包含了一些其他文件,如“守望文件编码转换器”...
3. **转换编码**:使用易语言提供的函数或自定义方法,将原始编码的文本转换成UTF-8编码。这个过程中,可能需要用到`转换编码`或类似的函数,该函数需要接收原始文本、原始编码和目标编码(这里是UTF-8)作为参数。 ...
标题“jsp文件编码转换工具(utf-8到GBK或相反)”涉及的核心知识点是关于字符编码的转换,特别是在JavaServer Pages (JSP) 文件中的应用。JSP是Java Web开发的一种技术,用于创建动态网页。在这个场景中,我们关注...
描述中提到了“utf8转成gb,big5”,这代表了三种常见的中文编码格式。UTF-8是一种广泛使用的编码,它支持Unicode字符集,包含了全世界几乎所有的字符,包括中文。GBK是GB2312的扩展,增加了更多的中文字符,主要在...