用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3245|回复: 3
收起左侧

[讨论/交流] URL传递汉字

[复制链接]
发表于 2011-8-3 10:05:45 | 显示全部楼层 |阅读模式
两次编码
urlencode(urlencode(汉字))

不知道还有其他好的解决方法没
发表于 2011-8-3 10:36:01 | 显示全部楼层
本帖最后由 yuzhigang5460 于 2011-8-3 10:39 编辑

google一下吧。
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。
 楼主| 发表于 2011-8-3 17:23:56 | 显示全部楼层
本帖最后由 kunwsk 于 2011-8-3 17:46 编辑

php就是用urlencode或 rawurlencode  URL 进行编码

如果方法一:
$str =urlencode('我是');
echo "<a href=\"act/m/$str\">show</a>";
发现url跳转还是 http://localhost/index.php/act/m/我是  
CI 就会拦截报url非法错误

方法二:
$str =urlencode(urlencode('我是'));
echo "<a href=\"act/m/$str\">show</a>";
发现url跳转变了 http://localhost/index.php/act/m/%25E6%2588%2591%25E6%2598%25AF
CI不会拦截。

第二次符合了$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

如果你用echo $str;
会发现其实第一次他已经变了 :%E6%88%91%E6%98%AF
但是为什么放到<a>标签中的 href中他就被还原了。



发表于 2011-8-4 09:09:02 | 显示全部楼层
用base64_encode()下啊.

本版积分规则