只能有字符编码转换的功能,有两种解决方案,第一是在客户端上直接用IE的VBS功能进行GBK转UTF-8再提交数据;第二是在服务器端用PHP的iconv功能转换,或者用mbstring的功能。用第一种方法,网上搜索有:
查看数据:
服务器端:
header("Content-type", "application/x-www-form-urlencoded;charset=GBK");//输出头标,设置为GBK编码
用户端(VBScript),获取UTF8数据,再转换GBK:
function gb2utf8(data){//GB编码是,ie通过二进制码utf8->gbk转为中文
var glbEncode = [];
gb2utf8_data = data;
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g|>,"%$2%$1").replace(/%([A-Z].)%(.{2})/g|>,"@$1$2");
t=t.split("@");
var i=0,j=t.length,k;
while(++i<j)>
k=t[i].substring(0,4);
if(!glbEncode[k]) {
gb2utf8_char = eval("0x"+k);
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
glbEncode[k]=escape(gb2utf8_char).substring(1,6);
}
t[i]=glbEncode[k]+t[i].substring(4);
}
gb2utf8_data = gb2utf8_char = null;
return unescape(t.join("%"));
}第二种方法简单些,但占用服务器资源:
<?php
iconv('GB2312','UTF8',"被转换字符串,输出到浏览器");
?>
查看数据:
服务器端:
header("Content-type", "application/x-www-form-urlencoded;charset=GBK");//输出头标,设置为GBK编码
用户端(VBScript),获取UTF8数据,再转换GBK:
function gb2utf8(data){//GB编码是,ie通过二进制码utf8->gbk转为中文
var glbEncode = [];
gb2utf8_data = data;
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g|>,"%$2%$1").replace(/%([A-Z].)%(.{2})/g|>,"@$1$2");
t=t.split("@");
var i=0,j=t.length,k;
while(++i<j)>
k=t[i].substring(0,4);
if(!glbEncode[k]) {
gb2utf8_char = eval("0x"+k);
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
glbEncode[k]=escape(gb2utf8_char).substring(1,6);
}
t[i]=glbEncode[k]+t[i].substring(4);
}
gb2utf8_data = gb2utf8_char = null;
return unescape(t.join("%"));
}第二种方法简单些,但占用服务器资源:
<?php
iconv('GB2312','UTF8',"被转换字符串,输出到浏览器");
?>
查询数据库时mysql_query("set names 'utf8'")会自动输出utf8
header("Content-Type:text/html;charset=gb2312");
不好的地方 在于占用过大的数据库空间. 不过 ajax似乎能进行转码的, 以前有看过这方面的说明.