A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 我是楠楠 于 2018-3-16 14:47 编辑

第4章 编码表

1.1 编码表的概述
编码表:把计算机底层的二进制数据转换成我们能看到的字符
*                 ASCII
*
*                 GB2312        ---        GBK
*                 Unicode        所有的字符都占2个字节
*                 UTF-8        长度可变的码表
*
* ANSI:本地编码表        gbk
* Java中的字符串默认使用的ANSIgbk
*
* 乱码:编码保持前后一致即可解决
1.2 Java中字符串的编码
1.2.1 常用方法
构造方法(字节数组转字符串):
String():初始化一个新创建的 String 对象,使其表示一个空字符序列
String(byte[] bytes) 使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String
String(byte[] bytes, Charset charset) 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String
成员方法(字符串转字节数组)
        getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
        getBytes(Charset charset) 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组

1.2.2 案例代码十一
[AppleScript] 纯文本查看 复制代码
package com.itheima_09;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
 
/*
 * 编码表:把计算机底层的二进制数据转换成我们能看到的字符
 * ASCII
 *
 * GB2312        ---        GBK
 * Unicode        所有的字符都占2个字节
 * UTF-8        长度可变的码表
 *
 * ANSI:本地编码表        gbk
 * Java中的字符串默认使用的ANSI(gbk)
 *
 * 乱码:编码保持前后一致即可解决
 *
 */
public class EncoderDemo {
public static void main(String[] args) throws IOException   {
//method();
FileInputStream fis = new FileInputStream("a.txt");
byte[] bys = new byte[1024];
int len = fis.read(bys);
//System.out.println(new String(bys,0,len));
System.out.println(new String(bys,0,len,"UTF-8"));
}
 
private static void method() throws UnsupportedEncodingException, FileNotFoundException, IOException {
String s = "高薪就业";
//byte[] bys = s.getBytes();//通过默认编码转换成数组
byte[] bys = s.getBytes("UTF-8");
FileOutputStream fos = new FileOutputStream("a.txt");
fos.write(bys);
fos.close();
}
 
}

1.3 字符流中的编码
1.3.1 常见对象
InputStreamReader(InputStream in, CharsetDecoder dec) 创建使用给定字符集解码器的 InputStreamReader

OutputStreamWriter(OutputStream out, CharsetEncoder enc) 创建使用给定字符集编码器的 OutputStreamWriter
1.3.2 案例代码十二
[AppleScript] 纯文本查看 复制代码
package com.itheima_09;
 
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
 
/*
 * 字符流中的编码
 *
 * 字符流 = 字节流 + 编码
 *
 */
public class EncoderDemo2 {
public static void main(String[] args) throws IOException {
//method();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"),"UTF-8");
//OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"));
String s = "迎娶白富美";
osw.write(s);
osw.close();
}
 
private static void method() throws IOException, UnsupportedEncodingException {
FileWriter fw = new FileWriter("b.txt");
String s = "月薪过万";
byte[] bys = s.getBytes("UTF-8");
//fw.write(s);
fw.write(new String(bys));
fw.close();
}
 
}
更多
第一天
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马