java里如何将汉字转换成16进制编码 ?

作者&投稿:巨阳 (若有异议请与网页底部的电邮联系)
在java中,如何将utf8 十六进制编码转换成汉字?~

当在基于HTTP协议的JSP或Servlet的应用中获取数据或发送请求时,JVM会把输送的数据编码成UTF8格式。如果我们直接从HTTP流中提取中文数据,提取的结果为“????”(可能更多问号),为转换成我们能够理解的中文字符,我们需要把UTF8转换成GB2312,借助ISO-8859-1标准编码能够轻易的实现,下面的代码实现了这一功能:

byte [] b;
String utf8_value;
utf8_value = request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据
b = utf8_value.getBytes("8859_1"); //中间用ISO-8859-1过渡
String name = new String(b, "GB2312"); //转换成GB2312字符

在知道流长度的情况下将输入流转换成字节数组 Java中的输入流抽象类InputStream有int read(byte[] b, int off, int len)方法,参数中byte[] b是用来存放从InputStream中读取的数据,int off指定数组b的偏移地址,也就是数组b的起始下标,int len指定需要读取的长度,方法返回实际读取的字节数。
下面的代码实现了这一功能:

ServletInputStream inStream = request.getInputStream(); //取HTTP请求流
int size = request.getContentLength(); //取HTTP请求流长度
byte[] buffer = new byte[size]; //用于缓存每次读取的数据
byte[] in_b = new byte[size]; //用于存放结果的数组
int count = 0;
int rbyte = 0;
while (count < size) {
//循环读取
rbyte = inStream.read(buffer); //每次实际读取长度存于rbyte中
for(int i=0;i<rbyte;i++) {
in_b[count + i] = buffer[i];
}
count += rbyte;
}

在不知道流长度的情况下将输入流转换成字节数组 前面介绍了已知流长度的情况下的转换方法,那么当我们不知道流有多长时,也就是说不能确定转换后的字节数组有多大时,该怎么处理呢?笔者查看了JDK文档之后发现ByteArrayOutputStream有一个byte[] toByteArray()方法,该方法会自动创建一个字节数组,然后返回。于是就巧妙的用ByteArrayOutputStream来作中间过渡实现转换,其它处理跟上面所介绍已知长度的情况差不多。假设需要被转换的流已经放在inStream里了,我们可以用如下的代码实现这一功能:

ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据
int rc = 0;

while ((rc = inStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in_b = swapStream.toByteArray(); //in_b为转换之后的结果
你试着改写成自己需要的代码

文字是指的字符之类的ASC码值么
可以用下面的方法转换:

public static String showData(String command) {
String str = "";
for(char c : command.toCharArray()) {
str += Integer.toHexString(c) + " ";
}
return str;
}
来源参考: http://lvjava.com/?p=90

可以调用show("在国",16)生成16进制,17、22........,最多支持到36
import java.util.ArrayList;
import java.util.List; public class ThritySix { /**
* @param args
*/
public static void main(String[] args) {
String str = "中华人发共和国";
System.out.println(show(str,36));
} public static List show(String source, int p) {
List list = new ArrayList();
char[] arr = source.toCharArray();
for (char c : arr) {
StringBuilder sb = new StringBuilder();
int tt = c; int ii = 0;
System.out.println(tt);

while (tt != 0) {
ii = tt % p;
if (ii > 9) {//如果大于9则用A-Z代替
sb.insert(0, getData(ii));//插入到最前面
} else {
sb.insert(0, ii);//插入到最前面
}
tt = tt / p;
}
list.add(sb.toString());
}

return list;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "123abc中国 ";
try {
byte[] b = s.getBytes();
String str = " ";
for (int i = 0; i < b.length; i++) {
Integer I = new Integer(b[i]);
String strTmp = I.toHexString(b[i]);
if (strTmp.length() > 2)
strTmp = strTmp.substring(strTmp.length() - 2);
str = str + strTmp;
}
System.out.println(str.toUpperCase());
} catch (Exception e) {
e.printStackTrace();
}
}


大侠们帮忙给 我的AVA 起个角色名字。要英文+符号+汉字的那种
-=GS.KING|西伯利亚狼=-

创圣的大天使LOGOS的登场人物
灰吹阳声优:岛崎信长搭乘战机:Vector壹号机自称救世主的少年。为了拯救世界,可以不顾任何危险向前突进。由于寡言少语而容易被人误解,但实际上很善解人意,不会对陷入困境的人坐视不管。生于书法家之家,因而字写得很漂亮,对汉字的造诣也很深。 月银舞亚声优:佐仓绫音搭乘战机:Vector贰号机在...

一次性搞懂字符集,编码,Unicode,Utf-8\/16,BOM...
为了便于管理,GB2312将所有字符分成了若干个96字符的组,每个组称为区,字符所在的位置称为区位,这样,每个字符都有了对应的区位码。例如,汉字"安"所在的区为第16区,位置序号是18,他的区位码就是1618,有了区位码以后怎样才能转换成编码呢? 很简单,把区位码分开,区号和位置序号分别加上 0xA0...

帮我起2个AVA的男角色名。
丶 是这个吧 。如果你有搜狗输入法 打dian 就可以找到。猎鹰丶 猎隼丶 这两个名字如何?

帮忙想个AVA队员的名字 要好听一点的哦
游戏名字:【你的瞳,浅褐色的迷梦】、【泪眼问花花不语つ】、【只昰↘兂力述说】、【感谢内↘媞沵彡】、【浅色夏未 * Summer】、【爸妈不同意〝那珴们就私奔】、【感情到期了〆可以续费么】、【把老师送去抗日】、我认为还不错的:【"说尒.爱莪!】【|ㄇ畏ヾX木寸女古】 【?▎梦児|...

小孩取名
很多汉字都包含道德规范要求在里面,如蔼、仁、容、德、轩、贤、良、伦、正、清、义、诚、直、道。但这并不意味着随随便便拉过来一个字配上姓就成为好名字,父母必须要考虑到姓与名如何匹配的问题。 (2)期望孩子学识渊博,博学多才 做为父母,也当然希望自己的孩子学业出色,最好有受到大学教育并且衣食无忧,...

游戏里起名字的时候怎么打特殊符号?
游戏中特殊符号是不可以取名的,但是输入法打出来的特殊符号除外,拿搜狗拼音举例。1.打开创建角色取名字的输入框,输入“dian”。2.按“+”号向后翻,可以找到“丶”这个符号,这个符号由于是输入法中打出来的,游戏客户端会默认为汉字。3.用同样方法可以打出“丨”,如下图所示。4.同样方法可以打...

ぁ和あ日语怎么读,,什么意思呀.
实例:fax传真机  ファックス ふぁっくす fakkusu 芭乐汁 グァヴァ ぐあヴぁ guxava 叉子(餐具) フォーク ふぉーく fokku 2、用来做象声词 拟声词,用来模拟现实生活里的口语发音 提高语气 表达人物、发言人的心情 常在书本 漫画上见到 实例 こるぁぁぁぁぁあ!まだわかんねぇの?...

谁帮我开通QQ游戏人生,谢谢 8531153
第1种方法:寻找拥有500荣誉值的好友协助开通 需要条件必须在早上10点钟 双方必须在线 由于抢资格的人数过多 很难抢的到 但是前提是小心他人 如果关系不错的当然没关系 但是有些问问上面的人 拿分就跑 不理会 或者 没抢到就不负责了 请LZ小心 第2种方法:在AVA战地之王官方网址寻找 开通 需要条件...

黄金屋文件搜索器使用指南
对于编号查询,直接输入数字,如"1006",输入一个字符后,系统会自动检索。如果需要多个编号,以空格开始,例如"1002 1003 1004 1005 1006",输入完毕后务必按下回车键。对于汉字间隔查询,如"我的爱人",这个功能适合对文件名记忆不准确时使用。只需在关键字之间添加空格,系统会根据输入进行搜索。但请...

塔城市18866349654: java 中怎么把一个字以十六进制的方式输出 -
秘施易齐: Integer.toHexString(value); 这个是把十进制数转换成十六进制,你可以先得到该字的ascll码,然后把'该字的ascll码转化为16进制

塔城市18866349654: java里如何将汉字转换成16进制编码 ? -
秘施易齐: public static void main(String[] args) { // TODO Auto-generated method stub String s = "123abc中国 "; try { byte[] b = s.getBytes(); String str = " "; for (int i = 0; i < b.length; i++) { Integer I = new Integer(b[i]); String strTmp = I.toHexString(b[i]); if (...

塔城市18866349654: java将中文字符串转为十六进制 -
秘施易齐: 字符串作为函数change的参数inputStr byte[] change(String inputStr) { byte[] result = new byte[inputStr.length() / 2]; for (int i = 0; i < inputStr.length() / 2; ++i) result[i] = (byte)(Integer.parseInt(inputStr.substring(i * 2, i * 2 +2), 16) & 0xff); return result; }

塔城市18866349654: java里 怎样将 将文字在在控制台输出,在转换成十六进制的编码
秘施易齐: 文字是指的字符之类的ASC码值么 可以用下面的方法转换: public static String showData(String command) { String str = ""; for(char c : command.toCharArray()) { str += Integer.toHexString(c) + " "; } return str; } 来源参考: http://lvjava.com/?p=90

塔城市18866349654: java如何将文件转换到十六进制 -
秘施易齐: 一个简单的java程序来验证字符串格式化程序的使用(“% 02x”)将文件转换成十六进制值.

塔城市18866349654: java字符串转换为十六进制数组 -
秘施易齐: 十六进制格式存储好说,主要还是要看你这种是怎么拆分,比如5 50 10 10 0A AF F6 9或5 5 0 1 0 1 0 0 A A F F 6 9或……

塔城市18866349654: java中 怎么把 ascii码转换为 十六进制 -
秘施易齐: 简单的转换,如下就可以:public static void main(String[] agrs) { String source = "30"; int code ; code = Integer.parseInt(source, 16);// 如果30代表是 16进制的30话,就取16// 如果30代表是 10进制的30话,就取10// code = Integer.parseInt(source, 10); char result = (char) code; System.out.println(result); } 根据自己程序健壮性的要求,可以对 int code的范围做出判断,防止 int转向char时产生异常.

塔城市18866349654: java编写十进制转换为十六进制 -
秘施易齐: " + convertDecimalToBinary(9123)); + convertDecimalToBinary(8));Dec number 9123 to Hex value is: " + convertDecimalToBinary(298)); Systempublic class Test { public static void main(String[] args) { System: 12a Dec number 9123 to Hex ...

塔城市18866349654: java 字符串转utf - 8的十六进制 -
秘施易齐: String str = URLEncoder.encode("字", "utf-8").replaceAll("%", "");

塔城市18866349654: java 中如何将字符串转换成16位bit型数据? -
秘施易齐: 应该用byte型数组 public static string stringtohexstring(string strpart) { string hexstring = ""; for (int i = 0; iint ch = (int) strpart.charat(i); string strhex = integer.tohexstring(ch);hexstring = hexstring + strhex; } return hexstring; } private static string ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网