`
chennanfei
  • 浏览: 41668 次
  • 性别: 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');
	}
分享到:
评论

相关推荐

    UTF8转16进制工具 Utf8ToHex

    Utf8ToHex工具的作用就是将UTF-8编码的字符串转换成16进制形式的字符串,这对于开发者来说非常有用。例如,在调试网络通信协议时,可能需要查看数据包中的字符串是否正确编码;在编程时,也可能需要将字符串转换为16...

    java 字符串转16进制Ascii

    因此,将字符串转换为16进制ASCII值意味着将每个字符的ASCII码转换为16进制形式。 以下是一个简单的Java方法,用于将字符串转换为16进制ASCII表示: ```java public static String strToHex(String input) { ...

    字符串转16进制字节

    这里,`encode('utf-8')`将字符串按照UTF-8编码转换为字节,然后`.hex()`方法将这些字节转换为16进制字符串。 **16进制字节转字符串:** 反之,如果我们有一个16进制字节序列,想要将其还原为字符串,我们需要先将...

    java16进制与字符串的转换借鉴.pdf

    - `printHexString`方法用于将字节数组以16进制形式打印到控制台。它循环遍历数组中的每个字节,将其转换为16进制字符串,并在每个字节之间添加空格,便于阅读。 这些方法在实际开发中非常有用,特别是在处理二...

    16进制转字符串,URL解码

    对于16进制转字符串的程序,可能接受一个16进制字符串作为输入,然后输出相应的字符串结果。而URL解码的程序则会接收一个已经编码过的URL,处理其中的百分号编码,返回可读的原始URL。这些小程序可能使用了编程语言...

    字符串 16进制互转.rar

    这个"字符串 16进制互转.rar"压缩包文件显然提供了一个实用工具,可以帮助用户便捷地进行16进制和字符之间的转换。这个工具对于那些需要处理底层数据,如软件开发、数据分析或者网络通信的专业人士来说尤其有用。 ...

    16进制和字符串互转工具

    在计算机中,字符串是用特定编码(如ASCII、Unicode或UTF-8)来存储和处理的,这些编码将字符映射到特定的数值,可能是16进制表示的。 16进制转字符串的过程通常涉及以下步骤: 1. 将16进制数转换为十进制数。这是...

    将字符串转换成gb2312或者utf-8编码的参数(js版)

    `Hex2Utf8`函数是关键,它将16进制的Unicode字符编码转换为UTF-8编码的百分比形式,适合作为URL参数。 在实际使用中,只需要调用`字符串对象.UrlEncode()`或`字符串对象.UrlEncodeGB2312()`即可将字符串转换为适合...

    字符串与16进制数据互转

    这里需要注意的是,16进制字符串通常表示字节的序列,所以如果字符串包含非ASCII字符(如UTF-8编码的多字节字符),转换时必须考虑字符编码。在上面的例子中,我们假设输入的16进制字符串代表UTF-8编码的字节序列。 ...

    js gb2312和utf-8互转

    这个函数负责将16位的十六进制字符串转换为UTF-8格式。 #### 3. GB2312到UTF-8转换 ```javascript function Gb2312ToUtf8(s1) { var s = escape(s1); var sa = s.split("%"); var retV = ""; if (sa[0] != "") ...

    如何将编码转换为UTF-8

    9. 编码过程:编码过程非常简单,任何字符只要不是 ASCII 码数字、字母,或者前面提到的标点符,它们都将被转换成字节形式,每个字节都写成这种形式:一个“%”后面跟着两位 16 进制的数值。 10. 空格的特殊处理:...

    字符串和16进制转换源码 string 和 HEX 支持汉字

    因此,对于包含汉字的字符串,我们通常使用Unicode编码,如UTF-8,它可以覆盖全球大部分语言的字符集。 十六进制(HEX)是逢16进1的计数制,由0-9和A-F这16个符号组成。在编程中,十六进制常用于表示颜色、内存地址...

    字符串转16进制码

    因此,将字符串转换为16进制码的过程实际上就是将字符串中每个字符的编码转换成16进制的形式。 在Python编程语言中,可以使用内置的`hex()`函数或者`ord()`和`format()`函数组合来实现这个转换。例如,对于一个字符...

    C#16进制unicode字符和汉字相互转换

    对于汉字到16进制Unicode的转换,我们需要首先获取汉字的Unicode码点,这通常通过`char.GetHashCode()`或者`char.GetUnicodeCategory()`等方法获取,然后将得到的码点转换为16进制字符串。 在实际开发中,我们可能...

    C#16进制与字符串字节数组之间的转换代码

    接着指定字符集(如UTF-8或GB2312),获取相应的编码对象,并将字符串转换为字节数组。最后,遍历字节数组并将其每个元素转换为十六进制字符串,同时可以根据参数选择是否在每个十六进制数之间插入分隔符。 ```...

    字符串十六进制转换工具(包含ANSI和UNICODE)

    4. 十六进制到UNICODE:根据用户选择的高低位顺序,将16进制数据转换回UNICODE字符串。对于高位在前的UTF-16BE,需要先组合高位字节,再组合低位字节;反之,对于低位在前的UTF-16LE,则相反。 这个工具的实用性...

    从二进制文件中取utf8的汉字

    "从二进制文件中取utf8的汉字"这一主题涉及到的是如何从二进制文件中提取用UTF-8编码表示的汉字字符。UTF-8是一种广泛使用的Unicode字符编码,它能够表示世界上几乎所有的文字系统,包括汉字。 首先,我们需要理解...

    VB.NET 字符串与二进制间的转换

    例如,`Encoding.ASCII.GetBytes(str)`或`Encoding.UTF8.GetBytes(str)`将字符串按照指定编码转换为字节数组。 - **GetString()**: 反之,字节数组可以转换回字符串,如`Encoding.ASCII.GetString(bytes)`或`...

    16进制数据转换

    ### IT知识点:Java中16进制数据与字符串(含中文)的相互转换 #### 核心概念 在计算机科学中,十六进制(Hexadecimal)是一种常用的数值表示方法,通常用于表示二进制数据,因为十六进制的每一位可以表示四位二...

    汉字转换16进制

    - 将汉字字符串转换为二进制数据,可能用到`WideCharToMultiByte`函数,以获取UTF-8或GBK编码的字节序列。 - 将二进制数据转换为16进制字符串,可能通过遍历字节序列并逐个转换为16进制数字完成。 6. **实践应用*...

Global site tag (gtag.js) - Google Analytics