现在给出PHP中的完美解决方案,无论是采用普通ASCII码,还是UTF-8格式存储,提交的中文字符奇偶,都没有问题。
采用普通文件格式ASCII码存储,保存为testgb.php
<?php
header("Content-Type: text/vnd.wap.wml;charset=GB2312");
echo '<?xml version="1.0" encoding="GB2312"?>';
echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "
http://www.wapforum.org/DTD/wml_1.1.xml">';?>
<wml>
<card id="main" title="PHP Web">
<p>
GET提交,结果:
<?php echo iconv("utf-8", "gb2312",$_GET["name"]);?><br/>
POST提交,结果:
<?php echo iconv("utf-8", "gb2312",urldecode($_POST["name"])); ?><br/>
<input name="name" emptyok="false" tabindex="2" format="*m"/>
<a href="testgb.php?name=$(name:e)">提交aaa</a><br/>
<anchor>提交anchor
<go href="testgb.php" method="post">
<postfield name="name" value="$(name:e)" />
</go>
</anchor><br/>
</p>
</card>
</wml>
采用UTF-8格式存储,保存为test_utf.php
<?php
header("Content-Type: text/vnd.wap.wml;charset=UTF-8");
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "
http://www.wapforum.org/DTD/wml_1.1.xml">';?>
<wml>
<card id="main" title="PHP Web">
<p>
GET提交,结果:
<?php echo $_GET["name"]; ?><br/>
POST提交,结果:
<?php echo urldecode($_POST["name"]); ?><br/>
<input name="name" emptyok="false" tabindex="2" format="*m"/>
<a href="test_utf.php?name=$(name:e)">提交aaa</a><br/>
<anchor>提交anchor
<go href="test_utf.php" method="post">
<postfield name="name" value="$(name:e)" />
</go>
</anchor><br/>
</p>
</card>
</wml>
补充一个函数
function encodecheck($chs)
{
if(ord(substr($chs,0,1))>0xE0){
$chs = iconv("UTF-8","GB2312",$chs);
return $chs;
}else{
return $chs;
}
}
使用
$user = encodecheck($_POST['user']);
$pass = md5(encodecheck($_POST['pass']));