PHP - 检测用户提供的字符的字符集

时间:2012-01-31 02:41:43

标签: utf-8 character-encoding

是否可以检测用户的字符串的字符集?

如果没有,下一个问题怎么样..

是否有可靠的内置PHP函数可以准确地判断用户是否提供了字符串(通过get / post / cookie等提供),是否为UTF-8?换句话说,我可以做一些像

这样的事情

is_utf8($ _ GET ['first_name'])

无论如何,这个函数可以生成TRUE,而实际上first_name不是UTF-8吗?

1 个答案:

答案 0 :(得分:1)

关于1:

你可以尝试mb_detect_encoding,但这在黑暗中几乎是一个机会。 “编码”字符串只是一堆字节。这种字节序列在任何数量的不同编码中通常同样有效。因此,根据定义,无法检测到未知编码可靠,您只能猜测。由于这个原因,存在诸如HTTP头之类的元信息,其应该传送所传送内容的编码。检查那些是否可用。

关于2:

mb_check_encoding($var, 'UTF-8')会告诉您字符串是否是有效的UTF-8字符串。据我所见,在最近的PHP版本中,它完成了它在锡上的说法。这仍然不意味着字符串必然是UTF-8字符串,它只是意味着字节序列的顺序在UTF-8中有效。