当前位置:首页 » 编程语言 » java编码与解码

java编码与解码

发布时间: 2023-04-01 00:21:18

① 在java中如何进行BASE64编码和解码

importsun.misc.BASE64Encoder;
importsun.misc.BASE64Decoder;

//将s进行BASE64编码
publicstaticStringgetBASE64(Strings){
if(s==null)returnnull;
return(newsun.misc.BASE64Encoder()).encode(s.getBytes());
}

//将BASE64编码的字符串s进行解码
(Strings){
if(s==null)returnnull;
BASE64Decoderdecoder=newBASE64Decoder();
try{
byte[]b=decoder.decodeBuffer(s);
returnnewString(b);
}catch(Exceptione){
returnnull;
}
}

② java里关于String的编码与解码

public
byte[]
getBytes(String
charsetName)
使用指定的字符集将此String编码为byte序列,结果存在一个byte数组中
public
String(byte[]
bytes,
String
charsetName)
通过使用指定的
charset
解码指定的
byte
数组,构造一个新的
String。
在网络传输中,信息都是以字节序列的方式传输的。所以,发送方的String要按照某种编码方式(如UTF-8,GBK)编码为字节序列,在网络中传输后,接收方取得这个字节序列,按照相同的编码方式将字节序列解码为String。
请看下面的代码片段:
String
name
=
"张三";
byte[]
b1
=
name.getBytes("UTF-8");
String
name1
=
new
String(b1,
"UTF-8");
//编码解码相同,正常显示
System.out.println(name1);
String
name2
=
new
String(b1,
"GBK");
//编码解码不同,乱码
System.out.println(name2);
byte[]
b2
=
name.getBytes("GBK");
String
name3
=
new
String(b2,
"GBK");
//编码解码相同,正常显示
System.out.println(name3);
String
name4
=
new
String(b2,
"UTF-8");
//编码解码不同,乱码
System.out.println(name4);
至于你的那个情况,要先用gbk编码,然后再用utf-8解码才能获得正常的字符串,我估计是因为
1.传输过来的字节码是用utf-8编码的,假设字节码为b。
2.你获得的那个字符串,假设为s,是用gbk对b进行解码获得的字符串,所以是乱码。
3.你使用gbk对s进行编码,用gbk解码之后再编码,于是获得了原来的b。
4.你使用utf-8解码,所以获得了正常的字符串。
简单的说:
b
->
(gbk解码)
->
乱码
->
[此处开始是你做的](gbk编码)
->
b
->
(utf-8解码)
->
正常字符串
研究完编码收获会不小的,对以后理解Java的输入输出(尤其是网络通信和文件读写)都很有帮助。

热点内容
androidgif缓存 发布:2024-11-02 18:32:50 浏览:342
怎么在windows下交叉编译qt 发布:2024-11-02 18:27:31 浏览:627
编程自动迷宫 发布:2024-11-02 18:09:48 浏览:432
联想数据守护者手机存储 发布:2024-11-02 18:09:43 浏览:201
游戏存储空间必须在同一个盘吗 发布:2024-11-02 18:09:43 浏览:677
云存储权益 发布:2024-11-02 18:08:59 浏览:55
做联机游戏服务器的电脑配置 发布:2024-11-02 17:44:36 浏览:172
华为编译器软件 发布:2024-11-02 17:42:11 浏览:123
电视机出场密码多少 发布:2024-11-02 17:36:23 浏览:577
服务器名称地址该如何填 发布:2024-11-02 17:31:14 浏览:84