Java 使用Charset类解决读入字符乱码问题和控制输出字符编码
来源:互联网 发布:c 递归算法 全排列 编辑:程序博客网 时间:2024/06/05 12:02
Java中用UTF-16编码字符(见博文Java 正确遍历字符串),Charset类建立了UTF-16编码的字节序列和其它字符编码方式的字节序列之间的映射(包括辅助字符)。当从外面读入表示字符的字节流时,我们可以通过Charset类指定原来字符的编码方式,好让程序可以正确的把字符原来的字节编码转化为Java自己的字节编码;同样,当把字符写出时,我们可以通过Charset指定字符的编码方式。下面举两个简单的例子来说明Charset的使用。
public void test1() {Charset charset = Charset.forName("UTF-8");try {InputStream inputStream = new FileInputStream("test1.txt");int num = inputStream.available();System.out.println("available bytes number is : " + num);byte[] bytes1 = null;if (num > 0) {bytes1 = new byte[num];System.out.println("bytes1 length is : " + bytes1.length);inputStream.read(bytes1);// charset指定的是字节数组原来的字符编码集System.out.println(new String(bytes1, charset));}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
public void test2() {Charset charset = Charset.forName("UTF-8");try {OutputStream outputStream = new FileOutputStream("test1.txt");String compareString = "liyuncong wangfang 李";// charset指定对字符串中字符编码的字符编码集byte[] bytes2 = compareString.getBytes(charset);outputStream.write(bytes2);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
在Java中,Charset的正确使用是非常重要的,比如当我们从互联网上下载大量网页时,需要发现网页的正确编码并在读入时利用Charset类正确将其转码,否则下载的网页就没有任何意义了。
1 0
- Java 使用Charset类解决读入字符乱码问题和控制输出字符编码
- 解决 web 字符编码乱码问题-----charSet 和PageEncoding的区别--request编码问题
- Java使用流读入字符,正确输出读入的字符.
- 字符编码和Java中的乱码问题
- 字符编码和Java中的乱码问题
- Java中String字符编码(CharSet)转换的相关问题
- java 解决全站字符乱码(POST和GET中文编码问题)
- java网络传输字符编码乱码解决
- Java NIO之Charset类字符编码对象
- 字符集和字符编码(Charset & Encoding)
- 字符集和字符编码(Charset & Encoding)
- 字符集和字符编码(Charset & Encoding)
- 字符集和字符编码(Charset & Encoding)
- 字符集和字符编码(Charset & Encoding)
- 字符集和字符编码(Charset & Encoding)
- 字符集和字符编码(Charset & Encoding)
- 字符集和字符编码(Charset & Encoding)
- 字符集和字符编码(Charset & Encoding)
- Hexagon处理器的条件执行机制
- jsoup替换网页中的链接demo
- O-C相关-10-动态类型检查
- VS2012错误处理-Depth-Image_Processing
- mac上安装android studio出现Error:compileSdkVersion android-x requires compiling with JDK 7问题
- Java 使用Charset类解决读入字符乱码问题和控制输出字符编码
- 第一个四年过去了
- linux 内存管理基本框架
- WinForm窗体及其控件的自适应
- 剑指Offer面试题38(Java版):数字在排序数组中出现的次数
- Java并发编程:volatile关键字解析
- Struts2值栈详解
- CMAKE 在Windows下的配置
- 学习笔记