java 中 16 进制 HEX 转换成字节码形式的 UTF-8
来源:互联网 发布:js隐藏img标签 编辑:程序博客网 时间:2024/05/29 18:28
恩,又碰到个蛋疼的编码转换问题了:要把形如 \xE9\xBB 的字符串转成中文。。。
在python中我们直接 print "\xE9\xBB\x84" 即可,
在shell中我们直接 echo $'\xe9\xbb\x84' #echo -e '\xe9\xbb\x84'也行,
注意:不能直接 echo $'\xde\xab'|iconv -f gbk -t utf-8 ,
因为 gbk的话,\xE9\xBB是榛,后面的\x84只有半个字,会报错或乱码,
utf8是变长的,占1~4字节,汉字一般是3字节,例如 xe9是16进制,占8bit,也就是一个字节。
但是到了 java 中,就比较蛋疼了,还是上代码吧:
01
import
java.io.UnsupportedEncodingException;
02
03
public
class
Hex2Byte {
04
public
static
void
main(String[] args)
throws
UnsupportedEncodingException {
05
06
String source =
"\\xE9\\xBB\\x84\\xE8\\x8A\\xB1\\xE6\\xA2\\xA8\\xE5\\xAE\\xB6\\xE5\\x85\\xB7\\xE8\\xBD\\xAC\\xE8\\xAE\\xA9"
;
07
String sourceArr[] = source.split(
"\\\\"
);
// 分割拿到形如 xE9 的16进制数据
08
byte
[] byteArr =
new
byte
[sourceArr.length -
1
];
09
for
(
int
i =
1
; i < sourceArr.length; i++) {
10
Integer hexInt = Integer.decode(
"0"
+ sourceArr[i]);
11
byteArr[i -
1
] = hexInt.byteValue();
12
}
13
14
System.out.println(
new
String(byteArr,
"UTF-8"
));
15
}
16
17
}
下面再来看看 unicode 形式怎么在 java 中转换:
1
String string =
"中国\u6211\u7231\u5317\u4EAC"
;
2
byte
[] utf8 = string.getBytes(
"UTF-8"
);
3
string =
new
String(utf8,
"UTF-8"
);
4
System.out.println(string);
恩,最后,我想说的是:java 是最好的语言!
REF:
java中byte 与16进制字符相互转换
http://marshzg.iteye.com/blog/722260
shell 下 urlencode/urldecode 编码/解码的几种方法
http://hi.baidu.com/leejun_2005/item/9e0f4e4ba62cde0bc11613b5
java: utf-8 与 unicode 互转
http://www.360doc.com/content/08/0421/16/21290_1206154.shtml
推荐阅读:
深度剖析Java的字符编码
http://geeklu.com/2009/12/dive-into-the-charset-of-java/
- java 中 16 进制 HEX 转换成字节码形式的 UTF-8
- C#文本编码ASCII,Unicode,UTF-8,UTF-7 HEX(16进制)转换算法
- C# 16进制(hex)字符串到字节流的转换 示例
- Java 中4字节形式数据转换为float
- Java中utf-8占几个字节
- UTF-8中汉字的字节长度
- VC.net 字符串转换成UTF-8形式
- 怎样将中文转换成gb2312和utf-8的形式
- 关于java UTF-8中文与Unicode编码之间转换,以及将浏览器地址栏编码过的中文转换UTF-8形式
- 编程:C++中UTF-8、UTF-16、UTF-32之间的编码转换
- Java Hex 16进制的 byte String 转换类
- Java Hex 16进制的 byte String 转换类
- Java Hex 16进制的 byte String 转换类 .
- Java Hex 16进制的 byte String 转换类
- Java Hex 16进制的 byte String 转换
- Java Hex 16进制的 byte String 转换类
- Java Hex 16进制的 byte String 转换类
- UTF-8的汉字三字节码与Unicode编码转换
- 条形码类型及其字符集和长度的说明
- 用su权限写tinymix命令改A10寄存器值
- 次方求模
- redmine install guide
- Android 漫游之路------直接拿来用!最火的Android开源项目(1)
- java 中 16 进制 HEX 转换成字节码形式的 UTF-8
- GTK+扫雷,目标达成,前来汇报,顺带一说按钮上色的疑惑
- 探索并发编程(七)------分布式环境中并发问题
- 获取当前程序,activity是否在运行
- ZOJ 3686 A Simple Tree Problem
- sql优化_sql server
- overlapped重叠IO
- 线程池ThreadPoolExecutor使用简介
- 2.22 Displaying Images with UIImageView