首先由于正常的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 文件转换的专用工具,简单实用,希望为你的开发带来方便!
16进制的字符串 转换为整数 function hex2int(hex) { var len = hex.length, a = new Array(len), code; for (var i = 0; i < len; i++) { code = hex.charCodeAt(i); if (48<=code && code < 58)...
在日常开发中,经常会用到不同格式的颜色域值之间的相互转换,以下给出一种解决方法。 代码如下: //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*RGB颜色转换为16进制*/ String....
本文实例讲述了javascript实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下: 之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如 SELECT CONCAT(0x68656c6...
如下所示: var hex="0x29";//十六进制 ...//将int值转换为十六进制 alert("hex:"+hex+"\ncharValue:"+charValue+"\ncharCode:"+charCode+"\nhexOri:"+hexOri); 以上就是小编为大家带来的javascrip
function zero_fill_hex(num, digits) { var s = num.toString(16); while (s.length < digits) s = "0" + s; return s; } function rgb2hex(rgb) { if (rgb.charAt(0) == '#') return rgb; var ds = rgb....
把代码通过escape转换成hex形式的代码,让人看不懂 2. 把代码进行简单的可逆加密,然后提供一个解密函数,通过解密函数把代码解出来,并用eval之类的调用将代码串交给js引擎运行。 3. 过滤掉代码中的注释和空格,...
Unicode代码点查找(角度PWA) ...支持的输入代码点格式:C样式(\ U000000),JavaScript / Java样式(\ u0000),ES6样式(\ u {0000}),U + HEX样式(U + 0000),\ x十六进制数字样式(\ x00 ) 支持的输出代码
Warna是用Java语言编写的颜色实用程序库,可帮助您解析,转换或操纵颜色。 它可以作为npm模块在浏览器或Node.js上运行。 安装 您可以通过npm安装Warna, npm install warna 或从下载最新版本 入门 Node.js var ...
BINHex:苹果的一种编码格式 BMP:Windows或OS/2位图文件 BOOK:Adobe FrameMaker Book文件 BOX:Lotus Notes的邮箱文件 BPL:Borlard Delph 4打包库 BSP:Quake图形文件 BUN:CakeWalk 声音捆绑文件(一种MIDI...