文件保存编码为UTF-8
页面也设置编码为UTF-8
但是在INPUT中输出的中文会变为乱码
请教一下测试数据:
thunder://QUFmdHA6Ly9keTpkeUB4bGouMnR1LmNjOjMwMTAxL1vRuMDXz8LU2Hd3dy4ydHUuY2Nd1s/D/Mzmye0uSEQxMjgwuN/H5bn60+/W0NfWLnJtdmJaWg==
<?php
if(isset($_POST['convert']))
{
$url = $_POST['before'];
$url = str_ireplace('thunder://','',$url);
$url = str_ireplace('qqdl://','',$url);
$url = str_ireplace('flashget://','',$url);
$url = base64_decode($url);
$url = str_ireplace('[FLASHGET]','',$url);
if(preg_match('/AA(.*)ZZ/',$url,$result))
{
$result = $result[1];
}
else
{
$result = $url;
}
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>下载地址转换器</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head><body>
<div id="container">
<div id="top"></div>
<div id="main">
<form action="" method="post">
<table width="630" border="0">
<tr>
<td width="68" height="80">原始地址</td>
<td width="554"><label for="before"></label>
<input type="text" name="before" id="before" value="<?php if(isset($_POST['before'])){echo $_POST['before'];} ?>"/></td>
</tr>
<tr>
<td height="40">真实地址</td>
<td><input name="after" type="text" id="after" readonly="readonly" value="<?php if(isset($result)){echo $result;} ?>"/></td>
</tr>
<tr>
<td height="80" colspan="2" align="center"><input type="submit" name="convert" id="convert" class="button" value=" " />
<input type="reset" name="reset" id="reset" class="button" value=" " /></td>
</tr>
</table>
</form>
</div>
<div id="bottom"></div>
</div>
</body>
</html>
页面也设置编码为UTF-8
但是在INPUT中输出的中文会变为乱码
请教一下测试数据:
thunder://QUFmdHA6Ly9keTpkeUB4bGouMnR1LmNjOjMwMTAxL1vRuMDXz8LU2Hd3dy4ydHUuY2Nd1s/D/Mzmye0uSEQxMjgwuN/H5bn60+/W0NfWLnJtdmJaWg==
<?php
if(isset($_POST['convert']))
{
$url = $_POST['before'];
$url = str_ireplace('thunder://','',$url);
$url = str_ireplace('qqdl://','',$url);
$url = str_ireplace('flashget://','',$url);
$url = base64_decode($url);
$url = str_ireplace('[FLASHGET]','',$url);
if(preg_match('/AA(.*)ZZ/',$url,$result))
{
$result = $result[1];
}
else
{
$result = $url;
}
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>下载地址转换器</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head><body>
<div id="container">
<div id="top"></div>
<div id="main">
<form action="" method="post">
<table width="630" border="0">
<tr>
<td width="68" height="80">原始地址</td>
<td width="554"><label for="before"></label>
<input type="text" name="before" id="before" value="<?php if(isset($_POST['before'])){echo $_POST['before'];} ?>"/></td>
</tr>
<tr>
<td height="40">真实地址</td>
<td><input name="after" type="text" id="after" readonly="readonly" value="<?php if(isset($result)){echo $result;} ?>"/></td>
</tr>
<tr>
<td height="80" colspan="2" align="center"><input type="submit" name="convert" id="convert" class="button" value=" " />
<input type="reset" name="reset" id="reset" class="button" value=" " /></td>
</tr>
</table>
</form>
</div>
<div id="bottom"></div>
</div>
</body>
</html>
Some files can give a real headhache when script file is coded in UTF-8. Change it to ANSI and it'll work fine.
ftp://dy:[email protected]:30101/[迅雷下载www.2tu.cc]窒命替身.HD1280高清国语中字.rmvb你把他当做 utf-8 编码数据回显,自然就是乱码了
而是他原来是gbk数据,然后 base64_encode 的base64编解码并不会改变数据的本身,原来是什么,还原回来还是什么你在处理时需要加上编码识别的代码
thunder://QUFmdHA6Ly9keTpkeUB4bGouMnR1LmNjOjMwMTAxL1vRuMDXz8LU2Hd3dy4ydHUuY2Nd1s/D/Mzmye0uSEQxMjgwuN/H5bn60+/W0NfWLnJtdmJaWg==然后通过函数转换
为什么说输入的数据是gbk?有点不太明白
只不过经过你的程序解码后,其内容是 gbk 编码的
thunder://QUFmdHA6Ly9keTpkeUB4bGouMnR1LmNjOjMwMTAxL1vRuMDXz8LU2Hd3dy4ydHUuY2Nd1s/D/Mzmye0uSEQxMjgwuN/H5bn60+/W0NfWLnJtdmJaWg==是通过GBK 编码
所以当你还原回去的时候 他还是GBK解决方法就是再做个编码转换...
其实我对编码不太熟悉
只知道gb2312包含6000多个常用汉字
gbk又多包含20000多个汉字
然后UTF-8是世界通用 比上面的多占用一点空间
我明白两位的意思
但是不明白下面这行是GBK编码的
ftp://dy:[email protected]:30101/[迅雷下载www.2tu.cc]窒命替身.HD1280高清国语中字.rmvb
难道说只要出现中文就是GBK?
UTF8不包含吗
$url = str_ireplace('thunder://','',$url);
$url = str_ireplace('qqdl://','',$url);
$url = str_ireplace('flashget://','',$url);
$url = base64_decode($url);
$url = str_ireplace('[FLASHGET]','',$url);
if(preg_match('/AA(.*)ZZ/',$url,$result)) {
$result = $result[1];
} else {
$result = $url;
}
return $result;
}$s = 'thunder://QUFmdHA6Ly9keTpkeUB4bGouMnR1LmNjOjMwMTAxL1vRuMDXz8LU2Hd3dy4ydHUuY2Nd1s/D/Mzmye0uSEQxMjgwuN/H5bn60+/W0NfWLnJtdmJaWg==';
$t = foo($s);
echo mb_detect_encoding($t, 'utf-8, gbk');CP936CP936 就是 GBK
类似的,big5汉字也包含简体字省略的误解,“utf-8包含gbk”全句是“utf-8能显示的汉字包含gbk能显示的汉字”
并不是“utf-8编码包含gbk编码”,至于“能显示”的后续工作还是要程序去告诉计算机“怎样显示”
仅仅告诉计算机“显示为utf-8”是不行的input:男人+女人
output:夫妇
out的概念包含in,但仅仅这样是不成功的,因为少了“转换为夫妇(男人+女人,结婚)”这个必须的过程
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
最后一句是起到作用的。如果还不行的话,你可以检查一下,数据库的数据集是不是UTF8 ,然后IDE上也最好选择UTF8,两者一致的话,就不会有乱码出现了。前几天我也被这个困扰着,找了一会资料,终于弄好了
UTF-8能显示
ftp://dy:[email protected]:30101/[迅雷下载www.2tu.cc]窒命替身.HD1280高清国语中字.rmvb
那为什么说它是gbk呢- -.