如何在PHP中检测错误编码的字符串

如何在PHP中检测错误编码的字符串,php,Php,假设有这样的字符串: Çë½ÌΪʲôÎÒÒ»½øÐв鶾ʱ¾Í·¢ÏÖϵͳÅÌ¿ÉÓÃ¿Õ ¼ä¾Í¼±¾ç¼õÉÙ£ 它们被错误地编码了。你认为如何才能知道它是否被错误地编码了? 右编码字符串的一个例子是 Ciao mamm@ guardà come mi divertò 我认为这两个城市之间有两个主要区别: 空格数/字符串长度 人声数量(aeiou)/弦长 代码应该是这样的 if({Numer of whitespaces/string_lenght} < 0.

假设有这样的字符串:

Çë½ÌΪʲôÎÒÒ»½øÐв鶾ʱ¾Í·¢ÏÖϵͳÅÌ¿ÉÓÃ¿Õ ¼ä¾Í¼±¾ç¼õÉÙ£
它们被错误地编码了。你认为如何才能知道它是否被错误地编码了? 右编码字符串的一个例子是

Ciao mamm@ guardà come mi divertò
我认为这两个城市之间有两个主要区别:

  • 空格数/字符串长度
  • 人声数量(aeiou)/弦长
代码应该是这样的

if({Numer of whitespaces/string_lenght} < 0.05 (1 every 20 other characters)}
     OR {Number of vocals(aeiou)/string_lenght} < 0.2 (1 every 5 other characters)})
  return WRONG
else
  return OK
if({空格数/字符串长度}<0.05(每20个字符1个)}
或{人声数量(aeiou)/字符串长度}<0.2(每5个字符1个)})
返回错误
其他的
返回OK

你有更好的主意吗?也许有一些php函数已经过测试,适合我的情况?谢谢

如果您知道编码应该是什么,请使用。如果您不知道编码应该是什么,请尝试,如果找不到有效的编码,则返回
FALSE

如果您知道编码应该是什么,请使用。如果您不知道编码应该是什么,请尝试,如果找不到有效的编码,则返回
FALSE

可能重复no,这是另一个问题;)究竟什么算是“错误编码”?您的意思是字符数据(例如,在HTTP头或数据库列的字符集中)报告为具有一种编码,但应具有另一种编码?示例字符串应该是所示字符的拉丁1代码点,还是页面中实际出现的UTF-8代码点?可能是重复的否,这是另一个问题;)究竟什么算是“错误编码”?您的意思是字符数据(例如,在HTTP头或数据库列的字符集中)报告为具有一种编码,但应具有另一种编码?示例字符串应该是所示字符的拉丁1代码点,还是页面中实际出现的UTF-8代码点?不,这不起作用。本例中的字符串是有效的拉丁文1,但它们没有意义。此外,mb_check_编码不检查每个字符是否有效,它只检查流是否有效;)然后你需要基于预期语言中字符的频率,或者使用pspellNo,这是行不通的。本例中的字符串是有效的拉丁文1,但它们没有意义。此外,mb_check_编码不检查每个字符是否有效,它只检查流是否有效;)然后,您需要根据预期语言中字符的频率,使用pspell