`
chennanfei
  • 浏览: 40819 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将16进制形式的字符串转成UTF-8

阅读更多

	public static void convertToUnicode() {
		String originString = "\\e6\\aa\\a2\\e8\\a6\\96\\e6\\aa\\a2  \\e6\\aa\\a2 \\e8\\a6\\96 \\e \\";
		String[] utfStrings= new String[3];
		byte[] UTF8_Encoding = new byte[3];
		int index = 0;

		try {
			for (int i = 0; i < originString.length(); i++) {
				char cur = originString.charAt(i);
				if (cur == '\\' && i + 2 < originString.length()) {
					String str = originString.substring(i, i + 3);
					char a = originString.charAt(++i);
					char b = originString.charAt(++i);
					if (isHexNum(a) && isHexNum(b)) {
						utfStrings[index++] = String.valueOf(str);
					} else {
						System.out.print(str);
						index = 0;
					}
				} else {
					for (int j = 0; j < index; j++) {
						System.out.print(utfStrings[j]);
					}
					System.out.print(cur);
					index = 0;
				}

				if (index == UTF8_Encoding.length) {
					for (int  j = 0; j < utfStrings.length; j++) {
						UTF8_Encoding[j] = (byte) (Integer.parseInt(utfStrings[j].substring(1),
								16));
					}
					System.out.print(new String(UTF8_Encoding, "UTF-8"));
					index = 0;
				}
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}

	private static boolean isHexNum(char ch) {
		return (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f');
	}
 

 

	public static void convertString() {
		String utf = "\\e6\\aa\\a2\\e8\\a6\\96\\e7\\99\\bc\\e7\\a5\\a8\\e4\\ba\\a4\\e8\\b2\\a8\\e8\\ad\\89\\e6\\98\\8e\\e9\\a0\\85\\e7\\9b\\ae";
		byte[] codes = new byte[3];
		int index = 0;
		char[] chs = new char[2];
		try {
			for (int i = 0; i < utf.length(); i++) {
				char ch = utf.charAt(i);
				if (ch == '\\') {
					if (i + 2 >= utf.length()) {
						System.out.println("wrong input! Please check");
						break;
					}

					chs[0] = utf.charAt(++i);
					chs[1] = utf.charAt(++i);
					if (isNum(chs[0]) && isNum(chs[1])) {
						String s = String.valueOf(chs);
						codes[index++] = (byte) (0xff & Integer.parseInt(s, 16));
					} else {
						System.out.print(ch);
						System.out.print(chs);
					}
				} else {
					System.out.print(ch);
				}

				if (index >= codes.length) {
					index = 0;
					System.out.print(new String(codes, "UTF-8"));
				}
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}
	
	private static boolean isNum(char a) {
		return (a >= '0' && a <= '9') || (a >= 'a' && a <= 'z');
	}
分享到:
评论

相关推荐

    ASCII及十六进制转换工具《建》

    说明:例如在前置符加了%即可求UTF-8值 键盘ASCII查询:可查键盘按键的十进制与十六进制值。 (例如可查询F1-F12,Shift,Ctrl,Alt,回车,退格等键值) 字符与Base64互转:字符与Base64编码的互转,可自定义密钥...

    基于JAVA/SWT的十六进制文件查看器HexViewer.7z

    字符串显示支持UTF-8和GBK编码 数值显示支持整数/长整数/浮点数/双精度浮点数 支持单个字节修改。操作方法:选择需要修改的行-&gt;右键选择modify-&gt;在打开的对话框里修改字节内容-&gt;点击save回到主界面-&gt;点击菜单栏File-...

    新版Android开发教程.rar

    程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...

    vcs:用于PHP的简单VCS包装器,试图在VCS工具之间提供一致的API

    注意事项这些都不是utf-8安全的-有很多以不安全的方式完成的手动字符串操作-研究要求mbstring(或类似字符串)的可行性。去做XML所有(svn)的东西! 添加包装程序以安全地进行解析-例如,请参见 拆分测试-集成和...

    python中bytes和str类型的区别

    经过一上午的查找资料。大概理清楚了bytes类型和str类型的区别。 bytes类型和str类型在呈现形式有相同之处,如果你print一个bytes类型的变量,会打印一个用b开头,用单引号括起来的序列。...因为在utf-8里,一个A

    python编码总结(编码类型、格式、转码)

    所以存储时需要规定一种存储形式,比如utf-8和utf-16等。理论上unicode是一种能够容纳全世界所有语言文字的编码方案。(其他编码格式不再多说) 【所谓GB码】 GB就是“国标”的意思,即:中华人民共和国国家标准。GB...

    c# 加密和解密相关代码

    string类的ToCharArray 方法用来将字符串中的字符复制到Unicode 字符数组,该方法有两种重载形式,本 实例中用到的它的重载形式如下: public char[] ToCharArray() 参数说明 返回值:元素为此字符串的各字符的...

    宋劲彬的嵌入式C语言一站式编程

    目录 历史 前言 I....1. 程序的基本概念 1. 程序和编程语言 2. 自然语言和形式语言 ...3. 在Linux C编程中使用Unicode和UTF-8 B. GNU Free Documentation License Version 1.3, 3 November 2008 参考书目 索引

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例041 将字符串的每个字符进行颠倒输出 52 实例042 去掉字符串中的所有空格 54 实例043 从字符串中分离文件路径、文件名及 扩展名 55 实例044 获取字符串中汉字的个数 57 实例045 批量替换某一类字符串 58 实例046...

    C#编程经验技巧宝典

    70 &lt;br&gt;0096 如何将数字转换为字符串 70 &lt;br&gt;0097 如何将字符串转换为数字 70 &lt;br&gt;0098 如何将数字转换为日期格式 71 &lt;br&gt;0099 如何将数字转换为货币格式 71 &lt;br&gt;0100 将字母全部转换大写 ...

    C#全能速查宝典

    1.4.29 LastIndexOf方法——确定字符在字符串中最后索引 70 1.4.30 Matches方法——检查字符串是否有重复的词出现 71 1.4.31 MONTH函数——返回指定日期中月部分的整数 73 1.4.32 PadLeft方法——在左边用空格填充 ...

    java开源包1

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包10

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    精易官方免费模块v3.60版

    1.完善“IP_转至16进制”“IP_16进制转IP”的备注 感谢 瞎胡闹 的提醒 2.修复“系统_格式化软盘”没有返回值的问题 感谢 阿蒙 的提醒 1.重写“线程_启动多参”并改名为“线程_启动多参_整数型” 修改详情请查看新...

    java开源包8

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包11

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包2

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

Global site tag (gtag.js) - Google Analytics