【发布时间】:2014-01-27 14:58:35
【问题描述】:
我通过 url 从各个站点获取数据。 url参数使用phpurlencode()函数进行url编码,但字符编码仍然可以是UTF-8或Latin-1。
例如 é 字符,从 UTF-8 进行 url 编码时变为 %C3%A9,但从 Latin-1 进行 url 编码时,变为 %E9。
当我通过 url 获取数据时,我使用urldecode(),然后我需要知道字符编码是什么,所以我最终在将它们插入 MySQL 数据库之前使用utf8_encode。
奇怪的是,下面的代码不起作用:
$x1 = 'Cl%C3%A9ment';
$x2 = 'Cl%E9ment';
echo mb_detect_encoding(urldecode($x1)).' / '.mb_detect_encoding(urldecode($x2));
它返回UTF-8 / UTF-8
这是为什么,我做错了什么,我怎么知道这些字符串的字符编码?
谢谢
【问题讨论】:
-
如果您使用的是
$_GET,则不应使用urldecode(),因为这些值已经解码。 -
@jeroen - 很可能,这只是一个创建简单测试用例的技巧。
-
@ÁlvaroG.Vicario 这个例子很清楚,这就是为什么它只是一个评论:-)
标签: php character-encoding url-encoding