是否可以安全地假设所有多字节,百分比编码的URI在通过urldecode()
后转换为UTF-8编码的字符串?
例如,如果$_SERVER['REQUEST_URI']
的内容按百分比编码:
/b%C3%BCch/w%C3%B6rterb%C3%BCch
将此字符串传递给urldecode()
后,我应该有一个多字节字符串。但是我怎么知道字符串的编码是什么?在上面的例子中,它是UTF-8,但总是这样安全吗?
如果假设不安全,是否有办法(mb_detect_encoding
除外)检测字符串的编码?我已经检查了请求标题,它们似乎没有任何帮助。
答案 0 :(得分:3)
答案 1 :(得分:0)
因为无论如何都假设它是不安全的(“坏人不关心”),你可以使用mb_check_encoding
来测试UTF-8字符串。 UTF的结构在另一种编码中与字符串一致的概率很低。
答案 2 :(得分:0)
你不知道。这取决于生成URI的人员/代码。