Skip to content

Instantly share code, notes, and snippets.

@ssddi456
Last active December 17, 2015 06:39
Show Gist options
  • Save ssddi456/5566866 to your computer and use it in GitHub Desktop.
Save ssddi456/5566866 to your computer and use it in GitHub Desktop.
for browser gbkescape
define([],function() {
var iframe=document.createElement("iframe");
iframe.src="about:blank";
iframe.setAttribute("style","display:none;visibility:hidden;");
document.body.appendChild(iframe);
var d=iframe.contentWindow.document;
d.charset=d.characterSet="GBK";
function getGBKEscape(s) {
d.write("<body><a href='?"+s+"'>X</a></body>");
d.close();
var url=d.body.firstChild.href;
return url.substr(url.indexOf("?")+1);
}
return function( s ) {
var proto = s + '';
var normEscape = s.split(/[\u4e00-\u9fa5]+/);
var GBKEscape = s.match(/[\u4e00-\u9fa5]+/g)||[];
var escaped = '';
for(var i = 0, n = normEscape.length; i < n; i ++ ){
normEscape[i] = encodeURIComponent( normEscape[i] );
}
for(var i = 0, n = GBKEscape.length; i< n;i++){
GBKEscape[i] = getGBKEscape( GBKEscape[i] );
}
if( s.charAt(0).match(/[\u4e00-\u9fa5]/) ){
for (var i = 0, n = GBKEscape.length; i < n; i++){
escaped += GBKEscape[i];
escaped += normEscape[i] || '';
}
if( normEscape[i] ){
escaped += normEscape[i];
}
return escaped;
} else {
for (var i = 0, n = normEscape.length; i < n; i++){
escaped += normEscape[i];
escaped += GBKEscape[i] || '';
}
if( GBKEscape[i] ){
escaped += GBKEscape[i];
}
return escaped;
}
}
});
@fouber
Copy link

fouber commented May 13, 2013

Nothing to preview

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment