我从地址栏接受的参数 转码 有一部分转不正常。

ElberOnly 2011-05-24 01:48:15
地址栏的参数是tag=%B1%BE%816%A61%C0%AD%B5%C7
实际上是 'tag=本•拉登'
很明显这是gb编码的

echo iconv('GBK','UTF-8',urldecode('%B1%BE%816%A61%C0%AD%B5%C7'));
echo mb_convert_encoding(urldecode('%B1%BE%816%A61%C0%AD%B5%C7'),'UTF-8','GB2312');
这样都不行!

其实 也就是中间的那个 %816%A61 • 这个点没有转好!
郁闷死了。求大神指教。
...全文
290 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ElberOnly 2011-06-15
  • 打赏
  • 举报
回复
哎 该贴要沦亡了。不是地址栏传参数的问题。是在地址栏里直接输入参数的问题。
根本就没有给我 加密的机会啊!~大哥大姐们 大神们
jhdl_n 2011-06-15
  • 打赏
  • 举报
回复
提交的时候就可以加密了呀。
ElberOnly 2011-05-26
  • 打赏
  • 举报
回复
因为我们强大的策划 要求不但要在搜索的输入框里能够输入关键字搜索,
而且还要能让客户在地址栏里直接输入关键字进行搜索。
如果是地址栏里进行输入关键字的话,我好想没有办法对关键字进行加密啊!~
客户端的程序没来得及加密就已经提交到服务端了。
ElberOnly 2011-05-25
  • 打赏
  • 举报
回复
我用mb_detect_encoding 这个函数
输入汉字的时候 地址栏输入汉字的时候,接收到的参数 显示是utf-8的
如果输入0-9 a-z A-Z这样的 编码显示ascii
但是 如果输入特殊些的 如日文 或者昨天的 本•拉登 mb_detect_encoding 这个函数就得不到结果了。
www_7di_net 2011-05-25
  • 打赏
  • 举报
回复
我测试了一下,发现可以直接传递中文,我的做法是:
1,用editplus新建php文件,保存的时候文件编码一定要选择utf8
2,该php的文件头也要设置为utf8,即
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
这样在地址栏传参数的时候就可以是中文不乱码了.
www_7di_net 2011-05-25
  • 打赏
  • 举报
回复
既然你要如此复杂,那就复杂一点吧
你可以先把需要传递的内容使用自定义的加密函数加密一下再传递,然后传递完接收之后再解密回原来的内容就行了,这就不存在编码问题了.
我记得这个加密解密的函数在discuz的程序里边有,你可以找找看
knless 2011-05-25
  • 打赏
  • 举报
回复
你是什么浏览器 如果是OPERA他中文在地址栏本身就是乱码 不用转码。。。。
littlebirds 2011-05-25
  • 打赏
  • 举报
回复
你为什么要再地址栏里输入这些内容呢?你究竟想得到什么样的结果呢?能描述清楚些吗?
littlebirds 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 elberonly 的回复:]

感谢2楼和5楼点醒了我。
还有一个问题 我怎么知道url上过来的是什么编码呢?
mb_check_encoding 用这个吗?
[/Quote]
额,这个我是真不知道了。。。
等高手吧。
ElberOnly 2011-05-24
  • 打赏
  • 举报
回复
感谢2楼和5楼点醒了我。
还有一个问题 我怎么知道url上过来的是什么编码呢?
mb_check_encoding 用这个吗?
ImN1 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lazygc520 的回复:]

......
PHP code

<?php
echo iconv('GB18030','UTF-8',urldecode('%B1%BE%816%A61%C0%AD%B5%C7'));
?>
[/Quote]

+++

你这个“点”不在gbk/gb2312编码范围内
ElberOnly 2011-05-24
  • 打赏
  • 举报
回复
gb编码是 一个汉字 有2个%+16进制的 utf的不是3个么? 重点不在这里,是我现在不能把中间的那个•字符转过来。
比如现在的这个 %B1%BE 就是个本字啊!
我的文件编码 和 浏览器都是utf-8的。
我说的gb是 本•拉登 encode之后的 %B1%BE%816%A61%C0%AD%B5%C7

littlebirds 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jordan102 的回复:]

urldecode('%B1%BE%816%A61%C0%AD%B5%C7') 这个解码之后为什么是GBK编码的呢?你让它解了之后是UTF-8的就不用转码了啊,改下你编辑器和浏览器的编码。改为UTF-8。
[/Quote]
+
littlebirds 2011-05-24
  • 打赏
  • 举报
回复
......

<?php
echo iconv('GB18030','UTF-8',urldecode('%B1%BE%816%A61%C0%AD%B5%C7'));
?>
一起混吧 2011-05-24
  • 打赏
  • 举报
回复
urldecode('%B1%BE%816%A61%C0%AD%B5%C7') 这个解码之后为什么是GBK编码的呢?你让它解了之后是UTF-8的就不用转码了啊,改下你编辑器和浏览器的编码。改为UTF-8。

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧