首先由于正常的ASCII码表示的字符有限,于是产生了Unicode, Unicode使用的是16进制的格式来表示一个字符.
在javascript里Unicode的表示格式有2种: 1. '%uxxxx' 2. '\uxxxx'.
在Java里Unicode格式就一种'\u'.
Javascript函数escape转义的字符使用的就是'%u',于是这个hex到了java里就认不出来了,就会出现乱码.
Solution:
1. 不管是'%u'或者'\u',他们都是hex在某种语言里的表示格式,真正的hex number还是在后面的数字. 所以只要把数字取出来加以处理就好了.
2. 数字取出来以后是16进制的,char和Integer 之间是可以隐式转换的,我们现在要做的就是把16进制的数字转换成10进制的Integer,然后转换成char,对应的字符就出来了.
/**
* Decode given string.
* Java just know the hex form '\u2122', not know how to translate other form hex.
* If string include the javascript hex, like '%u2122'. This method will get the real hex number and cast it to right format char.
* @param input_str the string to decode
* @return an decode string
*/
public static String decodeFromHex(String input_str) {
Pattern p = Pattern. compile( "%u([a-zA-Z0-9]{4})");
Matcher m = p.matcher(input_str);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb,
String. valueOf(( char) Integer. parseInt(m.group(1), 16)));
}
m.appendTail(sb);
return sb.toString();
}
分享到:
相关推荐
这是一款Bin to Hex 文件转换的专用工具,简单实用,希望为你的开发带来方便!
Java中byte[]、String、Hex字符串等转换的方法 Java中byte[]、String、Hex字符串等转换的方法是非常重要的知识点,这些转换方法在实际开发中经常被使用。下面将详细介绍这些转换方法。 byte[]和byte的合并 在Java...
这里我们将深入探讨“Base16”(也称为Hex)编码,以及Java和JavaScript中如何进行字符串与十六进制之间的转换。 Base16是一种简单的二进制到文本的编码方式,它将每个八位字节表示为两个十六进制数字。这种编码...
在JavaScript中,16进制字符串转换为10进制整数是一个常见的需求,尤其是在处理颜色代码、网络IP地址或二进制数据时。这里我们分析`hex2int`函数,它实现了这个转换过程。 首先,`hex2int`函数接受一个16进制的字符...
这段Java代码中,首先定义了一个方法`hexToDouble`,它接收一个十六进制字符串作为参数,并将其转换为一个`double`值。该方法首先创建一个8字节的数组,因为`double`类型在内存中占用8个字节。然后,它遍历十六进制...
在JavaScript中,`escape()`函数用于将字符串转换为适合在网络上传输的格式,主要通过将特殊字符(如空格、引号等)转换为百分号编码的形式。在Java中,我们可以采用类似的方法来实现这一功能。 代码片段中展示了...
标题《分享JavaScript与Java中MD5使用两个例子》中的知识点涉及了如何在JavaScript和Java语言中使用MD5加密算法,以及如何将字符串转换为MD5格式。MD5是一种广泛使用的密码散列函数,它可以产生一个128位的散列值...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换成固定长度的128位(16字节)摘要,通常以32位十六进制数的形式表示。MD5的主要用途是验证数据的完整性和一致性,比如...
在日常开发中,经常会用到不同格式的颜色域值之间的相互转换,以下给出一种解决方法。 代码如下: //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*RGB颜色转换为16进制*/ String....
在IT行业中,编码和解码是数据处理的重要环节,特别是在JavaScript和Java这两种广泛使用的编程语言中。本文将深入探讨“js解码”和“java编码”这两个主题,并结合标签“源码”和“工具”,讨论如何在实际项目中应用...
在编程语言中,如Java、Python、C++或JavaScript,都有内置的方法或库函数来进行字节到十六进制的转换,但理解这个过程的原理对于优化代码性能或解决兼容性问题至关重要。因此,理解并能够编写Byte2Hex源代码对于...
JSON(JavaScript Object Notation)是广泛用于数据交换的轻量级格式。JsonOperator类很可能提供了序列化和反序列化JSON对象的功能,方便地将Java对象转换为JSON字符串进行网络传输,或者将接收到的JSON数据解析为...
JavaScript中,加密结果是`ArrayBuffer`对象,通常会转换成Base64或Hex字符串。 5. **密钥管理与安全性**:确保密钥的安全存储和传输至关重要,避免明文传输。Java可以通过KeyStore管理密钥,JavaScript中则可以...
本文实例讲述了javascript实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下: 之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如 SELECT CONCAT(0x68656c6...
5. **颜色转换**:Java的Color类提供了静态方法createColor(int r, int g, int b)来创建RGB颜色,同时提供了toHexString()方法(非标准,可能需要自定义)将RGB颜色转换为HEX字符串。对于HSV模型,可能需要使用第三...
总之,SHA-256加密算法在JavaScript和Java中的使用方式虽然有所不同,但核心思想都是将明文信息转化为不可逆的摘要,以此来保护敏感数据,如用户密码。在实际项目中,应结合盐值和多次迭代等安全策略,以增强密码的...
16进制转文件的过程通常涉及到将16进制编码的数据转换成可读的文件格式,这在数据传输、存储和分析中具有重要意义。以下是对这个主题的详细讲解: 1. **16进制与二进制关系**:16进制是基于16个符号(0-9和A-F)的...
Java中的`java.security.MessageDigest`类可用于计算MD5。示例代码如下: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public String charToMD5(char[] ...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换为固定长度的输出,通常是一个128位的二进制数,以32位十六进制数的形式表示。在JavaScript和Java中,MD5常用于数据...
这段代码首先获取`MessageDigest`实例,然后对字符串进行哈希处理,最后将得到的字节数组转换成16进制的字符串输出。 `sha256.js`则是JavaScript版本的SHA256实现,适用于前端或后端开发。JavaScript中没有内置的...