第4章 編碼表
阿新 • • 發佈:2018-04-19
Java1.1 編碼表的概述
編碼表:把計算機底層的二進制數據轉換成我們能看到的字符
編碼表:把計算機底層的二進制數據轉換成我們能看到的字符
- ASCII
- GB2312 --- GBK
- Unicode 所有的字符都占2個字節
- UTF-8 長度可變的碼表
- ANSI:本地編碼表 gbk
- Java中的字符串默認使用的ANSI(gbk)
- 亂碼:編碼保持前後一致即可解決
1.2 Java中字符串的編碼
1.2.1 常用方法
構造方法(字節數組轉字符串):
String():初始化一個新創建的 String 對象,使其表示一個空字符序列
String(byte[] bytes) 使用平臺的默認字符集解碼指定的 byte 數組,構造一個新的 String
成員方法(字符串轉字節數組)
getBytes() 使用平臺的默認字符集將此 String 編碼為 byte 序列,並將結果存儲到一個新的 byte 數組中
getBytes(Charset charset) 使用給定的 charset 將此 String 編碼到 byte 序列,並將結果存儲到新的 byte 數組
1.2.2 案例代碼十一
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 案例代碼十二
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(); } }
第4章 編碼表