php与js的十六进制字符串互转
一个项目碰到了一个问题,就是php的bin2hex 字符转十六进制与js的字符转十六进制在转换英文的时候没有问题,但是在转换中文的时候差别就大了,解决的办法很简单,就是在中文的时候进行urlecode,转回来的时候加一个urldecode
js也是,加上encodeURL与decodeURL
示例如下:
<?php echo bin2hex(urlencode("专业的it一站式学习开发部署平台")); echo "<br/>"; echo urldecode(hex2bin("2545342542382539332545342542382539412545372539412538346974254534254238253830254537254142253939254535254243253846254535254144254136254534254239254130254535254243253830254535253846253931254539253833254138254537254244254232254535254239254233254535253846254230")); ?>js的
<script type="text/javascript"> var stringtoHex = function (str) { var val = ""; for (var i = 0; i < str.length; i++) { if (val == "") val = str.charCodeAt(i).toString(16); else val += str.charCodeAt(i).toString(16); } // val += "0a" return val }; var hexToString = function(str) { var trimedStr = str.trim(); var rawStr = trimedStr.substr(0, 2).toLowerCase() === "0x" ? trimedStr.substr(2): trimedStr; var len = rawStr.length; if (len % 2 !== 0) { alert("不正确的 ASCII格式字符串 Code!"); return ""; } var curCharCode; var resultStr = []; for (var i = 0; i < len; i = i + 2) { curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value resultStr.push(String.fromCharCode(curCharCode)); } return resultStr.join(""); }; document.write(stringtoHex(encodeURI("专业的it一站式学习开发部署平台"))); document.write("<br/>"); document.write(decodeURI(hexToString("2545342542382539332545342542382539412545372539412538346974254534254238253830254537254142253939254535254243253846254535254144254136254534254239254130254535254243253830254535253846253931254539253833254138254537254244254232254535254239254233254535253846254230"))); </script>
网友评论0