PHP变量的编码如何转换!

有两个页面index.html(GBK编码)search.php(UTF-8编码)html页面中有个搜索框!参数为q!点搜索提交search.php?q=汉字我想知道的是... 有两个页面index.html(GBK编码) search.php(UTF-8编码)
html页面中有个搜索框!参数为q!
点搜索提交search.php?q=汉字
我想知道的是在PHP页面中就是乱码了!该如何转换!

$qq=$_GET['q'];
$qqq = urldecode($qq);
$aa = iconv("UTF-8","GB2312",$qqq);
$q = urldecode($aa);
echo $q;

这样写对吗?最好帮忙把代码写出来!
展开
 我来答
维欧全景
2010-04-04 · TA获得超过107个赞
知道答主
回答量:93
采纳率:0%
帮助的人:0
展开全部
老兄,这个帮你看过了。首先你的思路是正确的,让我们来看看到底哪出了问题。
1.首先查看处理页面(search.php)浏览器的编码是什么,要是GB2312的话当然是乱码了,因为你已经给转成UTF-8了。调成UTF-8,如果正确显示说明你只是自己大意了。下面的就不用看了。
2.你的提交页面(index.html)我感觉应该是(index.php),因为“.html”文件应该不能嵌入php代码。我的代码是这样:
////////////////////index.php:(编码GB-2312)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Untitled</title>
</head>

<body>
<?php $test1="汉字";
$test2=urlencode($test1);

?>
<a href="search.php?q=<?php echo $test2 ; ?>">a</a>
</body>
</html>
////////////////////search.php:(编码UTF-8)
<?php

$test1 =urldecode($_GET['q']);
$test2 = iconv("GB2312","UTF-8",$test1);
echo $test2;

?>
你的iconv函数好像写错了,从GBK到UTF-8应该是“iconv("GB2312","UTF-8",$test1);”你好像写反了。希望这些可以给你帮助,祝你开心。
糖糖寳寳
2015-09-09 · TA获得超过6.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:92%
帮助的人:3961万
展开全部
  使用举例:
  1、把 GBK 编码字串转换成 UTF-8 编码字串 view plaincopy to clipboardprint?
<?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("你是我的好朋友","UTF-8","GBK");
?>
  2、把 UTF-8 编码字串转换成 GB2312 编码字串 view plaincopy to clipboardprint?
// 注意将此文件存盘成 utf-8 编码格式文件再测试
<?php
header("content-Type:text/html;charset=gb2312");
echo mb_convert_encoding("你是我的好朋友","gb2312","utf-8");
?>
  // 注意将此文件存盘成 utf-8 编码格式文件再测试
  <?php
  header("content-Type: text/html; charset=gb2312");
  echo mb_convert_encoding("你是我的好朋友","gb312","utf-8");
  ?>
3、对整个页面进行转换
该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正 常显示。
  在php文件的头部加上下面三行代码:
  view plaincopy to clipboardprint?
mb_internal_encoding(”gb2312″); // 这里的gb2312是你网站原来的编码
mb_http_output(”HTML-ENTITIES”);
ob_start(’mb_output_handler’);
  mb_internal_encoding(”gb2312″); // 这里的gb2312是你网站原来的编码 mb_http_output(”HTML-ENTITIES”); ob_start(’mb_output_handler’);
使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Mymillet
2010-04-04 · TA获得超过201个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:171万
展开全部
...自己解决....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式