JavaSE-18.2.2【字符串中的编解码问题、字符流中的编解码问题】
1 package day9.lesson2; 2 3 import java.io.UnsupportedEncodingException; 4 import java.util.Arrays; 5 6 /* 7 2.3 字符串中的编码解码问题 8 9 byte[] getBytes() 使用平台的默认字符集将该 String编码为一系列字节 10 byte[] getBytes(String charsetName) 使用指定的字符集将该 String编码为一系列字节 11 String(byte[] bytes) 使用平台的默认字符集解码指定的字节数组来创建字符串 12 String(byte[] bytes, String charsetName) 通过指定的字符集解码指定的字节数组来创建字符串 13 14 PS:平台指集成开发环境软件IDE 15 */ 16 public class StringDemo { 17 public static void main(String[] args) throws UnsupportedEncodingException { 18 String s = "中国"; 19 20 byte[] bytes = s.getBytes(); 21 System.out.println(bytes); //[B@4554617c 22 System.out.println(Arrays.toString(bytes)); //[-28, -72, -83, -27, -101, -67] <--平台(IDEA)默认UTF-8 23 // bytes = s.getBytes("UTF-8"); 24 // System.out.println(Arrays.toString(bytes)); //[-28, -72, -83, -27, -101, -67] 25 // bytes = s.getBytes("GBK"); 26 // System.out.println(Arrays.toString(bytes)); //[-42, -48, -71, -6] 27 28 String string = new String(bytes); 29 System.out.println(string); //中国 30 string = new String(bytes, "UTF-8"); 31 System.out.println(string); //中国 32 string = new String(bytes, "GBK"); 33 System.out.println(string); //涓浗 34 35 36 String ss = "中国"; 37 //编码 38 byte[] bys = ss.getBytes("GBK"); 39 System.out.println(Arrays.toString(bys)); //[-42, -48, -71, -6] 40 //解码 41 String sss = new String(bys, "GBK"); 42 System.out.println(sss); //中国 43 } 44 }
1 package day9.lesson2; 2 3 import java.io.*; 4 5 /* 6 2.4 字符流中的编码解码问题 7 8 字符流抽象基类 9 Reader:字符输入流的抽象类 10 Writer:字符输出流的抽象类 11 12 字符流中和编码解码问题相关的两个类 13 InputStreamReader (extends Reader) 14 是从字节流到字符流的桥梁 15 它读取字节,并使用指定的编码将其解码为字符 16 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集 17 OutputStreamWriter (extends Writer) 18 是从字符流到字节流的桥梁 19 是从字符流到字节流的桥梁,使用指定的编码将写入的字符编码为字节 20 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集 21 22 构造方法 23 InputStreamReader(InputStream in) 使用默认字符编码创建InputStreamReader对象 24 InputStreamReader(InputStream in,String chatset) 使用指定的字符编码创建InputStreamReader对象 25 OutputStreamWriter(OutputStream out) 使用默认字符编码创建OutputStreamWriter对象 26 OutputStreamWriter(OutputStream out,String charset) 使用指定的字符编码创建OutputStreamWriter对象 27 */ 28 public class ConversionStreamDemo { 29 public static void main(String[] args) throws IOException { 30 /*FileOutputStream fos = new FileOutputStream("stage2\\src\\day9\\lesson2\\osw.txt"); 31 OutputStreamWriter osw = new OutputStreamWriter(fos);*/ 32 33 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("stage2\\src\\day9\\lesson2\\osw.txt")); 34 osw.write("中国"); 35 osw.close(); 36 // 文本文件:中国 37 38 OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream("stage2\\src\\day9\\lesson2\\osw.txt"), "UTF-8"); 39 osw2.write("中国"); 40 osw2.close(); 41 // 文本文件:中国 42 43 OutputStreamWriter osw3 = new OutputStreamWriter(new FileOutputStream("stage2\\src\\day9\\lesson2\\osw.txt"), "GBK"); 44 osw3.write("中国"); 45 osw3.close(); 46 // 文本文件:�й� 47 48 InputStreamReader isr = new InputStreamReader(new FileInputStream("stage2\\src\\day9\\lesson2\\osw.txt"), "GBK"); 49 //一次读取一个字符 50 int ch; 51 while ((ch=isr.read()) != -1){ 52 System.out.print((char)ch); 53 } //中国 54 isr.close(); 55 } 56 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!