一个汉字编码问题,求教了 百度地图javascript编码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 AnsiToUtf8 不行么?//s3: widestring;s3:=Ansitoutf8(Trim(edt3.Text)); 网上查了资料,js是Unicode的编码,我用DELPHIXE6,和js间应当不要转换了吧?js和uft8间的转换,网上找了个utf16ToUtf8函数,我的TWebBrower连HTML文档都加载不了//UTF-16转UTF-8 function utf16ToUtf8(s){ if(!s){ return; } var i, code, ret = [], len = s.length; for(i = 0; i < len; i++){ code = s.charCodeAt(i); if(code > 0x0 && code <= 0x7f){ //单字节 //UTF-16 0000 - 007F //UTF-8 0xxxxxxx ret.push(s.charAt(i)); }else if(code >= 0x80 && code <= 0x7ff){ //双字节 //UTF-16 0080 - 07FF //UTF-8 110xxxxx 10xxxxxx ret.push( //110xxxxx String.fromCharCode(0xc0 | ((code >> 6) & 0x1f)), //10xxxxxx String.fromCharCode(0x80 | (code & 0x3f)) ); }else if(code >= 0x800 && code <= 0xffff){ //三字节 //UTF-16 0800 - FFFF //UTF-8 1110xxxx 10xxxxxx 10xxxxxx ret.push( //1110xxxx String.fromCharCode(0xe0 | ((code >> 12) & 0xf)), //10xxxxxx String.fromCharCode(0x80 | ((code >> 6) & 0x3f)), //10xxxxxx String.fromCharCode(0x80 | (code & 0x3f)) ); } } return ret.join(''); } //UTF-8转UTF-16 function utf8ToUtf16(s){ if(!s){ return; } var i, codes, bytes, ret = [], len = s.length; for(i = 0; i < len; i++){ codes = []; codes.push(s.charCodeAt(i)); if(((codes[0] >> 7) & 0xff) == 0x0){ //单字节 0xxxxxxx ret.push(s.charAt(i)); }else if(((codes[0] >> 5) & 0xff) == 0x6){ //双字节 110xxxxx 10xxxxxx codes.push(s.charCodeAt(++i)); bytes = []; bytes.push(codes[0] & 0x1f); bytes.push(codes[1] & 0x3f); ret.push(String.fromCharCode((bytes[0] << 6) | bytes[1])); }else if(((codes[0] >> 4) & 0xff) == 0xe){ //三字节 1110xxxx 10xxxxxx 10xxxxxx codes.push(s.charCodeAt(++i)); codes.push(s.charCodeAt(++i)); bytes = []; bytes.push((codes[0] << 4) | ((codes[1] >> 2) & 0xf)); bytes.push(((codes[1] & 0x3) << 6) | (codes[2] & 0x3f)); ret.push(String.fromCharCode((bytes[0] << 8) | bytes[1])); } } return ret.join(''); } delphi中多表查询出错 一个简单问题 请教大家关于ClientDataSet的用法.. orcale中求问计数问题 如何声明两个相同函数名和参数名,但参数类型不同的函数? 关于用更改函数前5字节的方法来拦截API的问题!迷茫中。。。 怎样做一个网络路径选择... 有谁有DELPHI 7,UPDATE 1 十万火急!!! 非程序问题-----多次遭"尼母达"袭击,请问如何治本?? Idhttp如何模拟刷网站的流量,UV如何模拟? 为什么这段把txt转成doc的代码偶尔出错
AnsiToUtf8 不行么?
//s3: widestring;s3:=Ansitoutf8(Trim(edt3.Text));
function utf16ToUtf8(s){
if(!s){
return;
}
var i, code, ret = [], len = s.length;
for(i = 0; i < len; i++){
code = s.charCodeAt(i);
if(code > 0x0 && code <= 0x7f){
//单字节
//UTF-16 0000 - 007F
//UTF-8 0xxxxxxx
ret.push(s.charAt(i));
}else if(code >= 0x80 && code <= 0x7ff){
//双字节
//UTF-16 0080 - 07FF
//UTF-8 110xxxxx 10xxxxxx
ret.push(
//110xxxxx
String.fromCharCode(0xc0 | ((code >> 6) & 0x1f)),
//10xxxxxx
String.fromCharCode(0x80 | (code & 0x3f))
);
}else if(code >= 0x800 && code <= 0xffff){
//三字节
//UTF-16 0800 - FFFF
//UTF-8 1110xxxx 10xxxxxx 10xxxxxx
ret.push(
//1110xxxx
String.fromCharCode(0xe0 | ((code >> 12) & 0xf)),
//10xxxxxx
String.fromCharCode(0x80 | ((code >> 6) & 0x3f)),
//10xxxxxx
String.fromCharCode(0x80 | (code & 0x3f))
);
}
}
return ret.join('');
}
//UTF-8转UTF-16
function utf8ToUtf16(s){
if(!s){
return;
}
var i, codes, bytes, ret = [], len = s.length;
for(i = 0; i < len; i++){
codes = [];
codes.push(s.charCodeAt(i));
if(((codes[0] >> 7) & 0xff) == 0x0){
//单字节 0xxxxxxx
ret.push(s.charAt(i));
}else if(((codes[0] >> 5) & 0xff) == 0x6){
//双字节 110xxxxx 10xxxxxx
codes.push(s.charCodeAt(++i));
bytes = [];
bytes.push(codes[0] & 0x1f);
bytes.push(codes[1] & 0x3f);
ret.push(String.fromCharCode((bytes[0] << 6) | bytes[1]));
}else if(((codes[0] >> 4) & 0xff) == 0xe){
//三字节 1110xxxx 10xxxxxx 10xxxxxx
codes.push(s.charCodeAt(++i));
codes.push(s.charCodeAt(++i));
bytes = [];
bytes.push((codes[0] << 4) | ((codes[1] >> 2) & 0xf));
bytes.push(((codes[1] & 0x3) << 6) | (codes[2] & 0x3f));
ret.push(String.fromCharCode((bytes[0] << 8) | bytes[1]));
}
}
return ret.join('');
}