mikebai.com

  • Home
  • dev
  • DotNET
  • M365
  • 搞笑
  • 杂七杂八
  • FocusDict
個人BLOG
it developer
  1. Main page
  2. dev
  3. Main content

Java编码的那些事儿

2012-01-31 136hotness 0likes 0comments

Java编码


Unicode是全球标准字符集,是Java所为String采用的编码方式,任何字符用2个字节表示。String实例中保存有一个char[]字符数组。string.getByte()方法可以获得到这个字符串实例在指定编码下的字节数组,注意的是不带参数的getByte方法使用OS默认的字符集,比如GB2312(简体中文)。所以要得到Unicode下的字节数组,需要这样:string.getBytes(“unicode”)(此处注意见下文)。如果使用new String(byte[], Charset)构造,可以将已知编码的字节数组重新拼成一个String实例,即用指定的Charset去组合字节为Unicode字符罢了。同理,不带Charset的String构造使用OS默认字符集。


因此,得到UTF-8的字节数组,按以下步骤:







1
2
3
4
String str = "梦";
byte[] bytes = str.getBytes("UTF-8"); "使用UTF-8解码字符串得到的UTF-8字节数组"
String str2 = new String(bytes, "utf8"); "按照当初被解码的方式(utf8)重新组成Java String类"
str.equals(str2) == true; "使用大小写不同的编码写法,来区别不同API中参数代表的意义"

所以,str = new String(str.getBytes(Charset), Charset) 什么都没有做,除了新建了个String对象。


但是如果你要获取unicode的字节数组,却有非常多的选择,而且很容易出错。







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void echoBytesTest() {
String s = "梦";
echoBytes(s, "Unicode");
echoBytes(s, "UnicodeBig");
echoBytes(s, "UnicodeLittle");
echoBytes(s, "UnicodeBigUnmarked");
echoBytes(s, "UnicodeLittleUnmarked");
echoBytes(s, "UTF-16");
echoBytes(s, "UTF-16BE");
echoBytes(s,
Tag: Nothing
Last updated:2012-01-31

mikebai

This person is a lazy dog and has left nothing

Like
< Last article
Next article >

COPYRIGHT © 2025 mikebai.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang