`
tuoxie007
  • 浏览: 162746 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自己封装的一个编码转换工具类

    博客分类:
  • Java
阅读更多

java做编码转换有两中方法

1.基于流的编码转换

  InputStream is = Main.class.getResourceAsStream(fileName);
  BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
  String tmp;
  while((tmp = br.readLine()) != null){
    System.out.println(tmp);
  }
 

 

 

2.基于字符的编码转换

  InputStream is = Main.class.getResourceAsStream(fileName);
  BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
  String tmp;
  while((tmp = br.readLine()) != null){
    System.out.println(tmp);
  }
 

 

我这里用的是第一种方法,其他不多说了直接贴代码了

 

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

public class EncodingConverter {

	public static final String UTF_8 = "UTF-8";
	
	public static InputStream converter(InputStream is, String srcEnc, String tarEnc)
			throws IOException {

		// builder a reader using source encoding
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		// get byte array
		InputStream tarIs = new ByteArrayInputStream(sb.toString().getBytes(tarEnc));
		return tarIs;
	}

	public static InputStream converterToUTF(InputStream is, String srcEnc)
			throws IOException {

		// builder a reader using source encoding
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		// get byte array
		InputStream tarIs = new ByteArrayInputStream(sb.toString().getBytes("utf-8"));
		return tarIs;
	}

	public static byte[] converterToByteArray(InputStream is, String srcEnc, String tarEnc)
			throws IOException {

		// builder a reader using source encoding
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		// get byte array
		return sb.toString().getBytes(tarEnc);
	}

	public static byte[] converterToUTFByteArray(InputStream is, String srcEnc)
			throws IOException {

		// builder a reader using source encoding
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		// get byte array
		return sb.toString().getBytes("utf-8");
	}

	public static String converterToString(InputStream is, String srcEnc, String tarEnc)
			throws IOException {

		// builder a reader using source encoding
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		return sb.toString();
	}

	public static String converterToUTFString(InputStream is, String srcEnc)
			throws IOException {

		// builder a reader using source encoding
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		return sb.toString();
	}

	public static InputStream converter(byte[] bytes, String srcEnc, String tarEnc)
			throws IOException {

		// builder a reader using source encoding
		InputStream is = new ByteArrayInputStream(bytes);
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		// get byte array
		InputStream tarIs = new ByteArrayInputStream(sb.toString().getBytes(tarEnc));
		return tarIs;
	}

	public static InputStream converterToUTF(byte[] bytes, String srcEnc)
			throws IOException {

		// builder a reader using source encoding
		InputStream is = new ByteArrayInputStream(bytes);
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		// get byte array
		InputStream tarIs = new ByteArrayInputStream(sb.toString().getBytes("utf-8"));
		return tarIs;
	}

	public static byte[] converterToByteArray(byte[] bytes, String srcEnc, String tarEnc)
			throws IOException {

		// builder a reader using source encoding
		InputStream is = new ByteArrayInputStream(bytes);
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		// get byte array
		return sb.toString().getBytes(tarEnc);
	}

	public static byte[] converterToUTFByteArray(byte[] bytes, String srcEnc)
			throws IOException {

		// builder a reader using source encoding
		InputStream is = new ByteArrayInputStream(bytes);
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		// get byte array
		return sb.toString().getBytes("utf-8");
	}

	public static String converterToString(byte[] bytes, String srcEnc, String tarEnc)
			throws IOException {

		// builder a reader using source encoding
		InputStream is = new ByteArrayInputStream(bytes);
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		return sb.toString();
	}

	public static String converterToUTFString(byte[] bytes, String srcEnc)
			throws IOException {

		// builder a reader using source encoding
		InputStream is = new ByteArrayInputStream(bytes);
		Reader reader = new InputStreamReader(is, srcEnc);
		StringBuilder sb = new StringBuilder();

		// read content
		int c;
		while ((c = reader.read()) != -1) {
			sb.append((char) c);
		}
		reader.close();

		return sb.toString();
	}
	public static void main(String[] args) throws IOException {
		InputStream is = new FileInputStream("G:/out.txt");
		is = converter(is, "utf-8", "gbk");
		Reader isr = new InputStreamReader(is, "gbk");
		StringBuilder sb = new StringBuilder();
		int c;
		while ((c = isr.read()) != -1) {
			sb.append((char) c);
		}
		is.close();
		System.out.println(sb.toString());
	}
}
 
分享到:
评论
2 楼 u148 2014-10-13  
java.io.IOException: Stream closed
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:325)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.read(BufferedReader.java:175)

有时候会报这个错误.
1 楼 tutu1982 2009-05-02  
。。。。。。。。。。。

相关推荐

    易语言批量编码转换工具源码.rar

    总结来说,"易语言批量编码转换工具源码.rar"提供的资源是一个完整的易语言编程实例,涵盖了编码转换的核心技术、扩展模块的使用以及源码的解读。通过研究这个工具,不仅可以掌握易语言的编码处理技巧,还能了解如何...

    java视频转换工具类(附带转换工具类)

    在Java编程环境中,开发一个视频转换工具类是一个高级任务,涉及到多媒体处理和文件I/O操作。这个"java视频转换工具类"显然提供了这样的功能,能够将视频文件转换为不同的格式,如mp4、ogg和flv等。这些格式在互联网...

    mp4解封装格式转换工具

    这个命令会将`.h264`和`.aac`文件封装到一个FLV文件中。 5. **添加ADTD头**: ADTD(Audio Data Transport Stream with ADTS Header)是AAC数据的一种特定表示形式,带有AAC的头部信息,使得数据流能够被FLV等...

    微信支付工具类--封装全部微信支付工具类

    微信支付工具类是一系列用于处理微信支付业务的Java类,它们封装了与微信支付接口交互的逻辑,使得开发者能够更方便地集成微信支付功能到自己的应用程序中。以下是对这些类的功能和作用的详细说明: 1. **WXPay....

    基于Android系统Api封装常用工具类

    在Android应用开发中,工具类(Utils)的封装是一个重要的环节,它可以帮助开发者高效地复用代码,提高开发效率。本项目"基于Android系统Api封装常用工具类"就是这样一个资源库,它集成了Android API的各种实用功能...

    文件编码转换器

    因此,需要通过编码转换工具进行转换,确保文件内容正确显示。 4. **批量转换**:批量转换功能允许用户一次性处理多个文件,提高工作效率。这在处理大量文档,如日志、文本档案时尤其有用。 5. **正则表达式检索**...

    ffmpeg java 封装工具类,音视频处理.zip

    FFmpeg 是一个强大的开源命令行工具,用于处理音频和视频文件。它支持各种编码、解码、转换、流媒体操作,以及许多其他功能。在Java开发中,通过封装FFmpeg命令,可以方便地在应用程序中集成音视频处理功能。本...

    C++ 封装的日志类

    本文将深入探讨一个支持ASCII和Unicode编码的日志封装类的设计和实现,以`Log.cpp`和`Log.h`两个文件为例。 首先,`Log.h`文件通常包含类的声明,定义了日志类的接口。这个类可能包含以下几个关键部分: 1. **类...

    String封装工具类

    本篇将重点介绍一个名为"String封装工具类"的Java库,它提供了一系列方便、高效的字符串处理方法。 这个工具类通常包含了对字符串的各种操作,如拼接、格式化、查找、替换、分割、去空格、大小写转换等。在Java中,...

    采集封装编码传输

    在IT行业中,"采集封装编码传输"是一个非常关键的概念,特别是在视频流媒体和网络监控领域。这个过程涉及了从原始数据获取、结构化处理、压缩优化到最终通过网络进行高效传输的一系列步骤。以下是对这一过程的详细...

    CURL写的一个类,可用于数据采集并实现编码转换~!

    而这里的"一个CURL写的类"则是将CURL的功能封装成一个面向对象的PHP类,方便开发者进行数据采集和编码转换操作。下面我们将详细讨论这个类的可能实现和相关知识点。 首先,`Once`方法代表单个网站信息采集。在数据...

    第三方网表转换工具(Altium Designer网表转Allgero),支持封装非法字符替换功能

    在电子设计领域,电路板设计软件的互操作性是一个重要的课题。Altium Designer是一款广泛应用的PCB设计工具,而Allegro则是Cadence公司的产品,主要用于半导体和电子行业的PCB布局布线。当设计师需要在两者之间进行...

    基于netbeans下面有界面操作的编码转换工具native2ascii

    这个是一个基于netbeans下开发的有操作界面的编码转换工具,其中只是将java自带的native2ascii工具做了一次封装,让其具有方便的界面操作,它可以实现将你想要转换的文件/文件夹拖入输入框,又可以通过设置你机子上...

    新编码转换大全模块+应用例程.rar

    在IT领域,编码转换是一个非常重要的主题,尤其是在处理不同字符集和编码标准时。"新编码转换大全模块+应用例程.rar" 提供的资源很可能是一个包含多种编码转换方法的软件模块,以及演示如何使用这些模块的应用程序...

    封装好的HTTP请求类,基于QT

    - **数据解析**:接收服务器响应后,进行数据解析,可能涉及编码转换、JSON解析等。 2. **请求方法**:常见的HTTP请求方法有GET、POST、PUT、DELETE等。GET用于获取资源,POST用于提交数据,PUT用于更新资源,...

    ffmpeg封装编码库

    FFmpeg是一个开源项目,它包含了多种音视频处理工具,其中包括编码、解码、转换、流媒体等功能。在本文中,我们将深入探讨如何将FFmpeg封装为一个编码库,以及这个库可能包含的关键知识点。 首先,FFmpeg的核心是其...

    视频转换工具

    9. **安装程序svcSetup.exe**:这个文件名svcSetup.exe通常指的是一个安装程序,可能是视频转换工具的安装包。安装程序会引导用户完成软件的下载和安装步骤,将其添加到计算机中以便使用。 10. **安全与隐私**:在...

    java文件的编码转换

    在IT行业中,编码转换是一个常见的问题,特别是在处理不同来源或平台的文件时。Java作为一种广泛使用的编程语言,处理文件编码转换也是其能力之一。本文将深入探讨“Java文件的编码转换”这一主题,以及如何利用Java...

    AD封装库 常用音视频类封装

    "AD封装库 常用音视频类封装"是一个专门针对这一领域的工具集,它提供了一套完整的音视频处理解决方案,帮助开发者更便捷地实现相关功能。 首先,我们要理解“封装”的概念。在编程中,封装是面向对象编程的一个...

    C++代码实现H264编码视频封装成avi/mp4文件

    总的来说,通过C++实现H264视频编码到avi/mp4封装是一个涉及到编码理论、多媒体容器格式以及文件操作的复杂过程。熟练掌握这一技术,不仅可以提升多媒体处理的效率,还能为开发自己的视频处理工具或系统打下坚实基础...

Global site tag (gtag.js) - Google Analytics