String类的编码和解码问题
编码 string 解码 问题
2023-09-14 08:58:30 时间
我们前面知道同一个字符在利用不同的编码表得到的结果一般是不一样的。
这里讨论个字符串的编码和解码问题
字符串的一些方法:
String(byte[] b,Charset charset);
String(byte[] b,int offset,int length,Charset charset);
byte[] getBytes(String charsetName)
什么是编码解码?
编码:把看得懂的变成看不懂的
解码:把看不懂的变成看得懂的
编码问题只要编码解码使用的而编码表是一致的就即可解决
一个小例子:谍战片(发电报,接电报)
码表: 小本子
数值 字符
信息:
今天下午2:00,老地方见
发电报: 字符---数值----二进制 电报机101010...
收电报: 二进制----十进制---码表----字符-----拼接成信息
windows的默认编码是本地编码是GBK
package com.StringTransform; import java.io.UnsupportedEncodingException; import java.util.Arrays; public class StringTransformDemo { public static void main(String[] args) throws UnsupportedEncodingException { String s="你好"; // byte[] b=s.getBytes();//[-60, -29, -70, -61] 编码 2个字节代表一个中文 // byte[] b=s.getBytes("GBK");//[-60, -29, -70, -61] 编码结果完全相同,还可以多次测试知道,默认编码是GBK byte[] b=s.getBytes("utf-8");//[-28, -67, -96, -27, -91, -67] utf-8一般将中文变成3个字节表示一个中文 System.out.println(Arrays.toString(b)); // String message=new String(b);//解码 使用GBK编码的时候直接解码也成功,所以默认解码方式也是GBK 直接解码utf-8出现浣犲ソ String message=new String(b,"utf-8"); //使用对应的编码表解码发现就能得到想要的信息 System.out.println(message); } }
相关文章
- 公钥证书编码解读
- python3之编码详解
- Java:字符编码
- C#基础知识系列一(goto、i++、三元运算符、ref和out、String和string、重载运算符)
- 【字符编码】彻底理解字符编码(转)
- Atitit 字符串转换数组main参数解析 args splitByWholeSeparator String string=" -host 101.1 8*124 -db 1
- Atitit 命令行dsl传递参数的几种模式对比 cli url模式 键值对NameValuePair urlutil String string = " -host 101.13
- 使用 SAP Cloud SDK 开发应用时,如何通过环境变量的配置避免硬编码
- 利用Certutil对任意文件进行编码和解码——真实攻击中会经常用到
- UnicodeDecodeError—UTF-8 编码(Python 中的底层基础)
- H265框架编码流程(一)