gpt4 book ai didi

php - 在 PHP 中检测正确的字符编码?

转载 作者:可可西里 更新时间:2023-10-31 23:41:39 26 4
gpt4 key购买 nike

我正在尝试检测字符串的字符编码,但无法得到正确的结果。
例如:

$str = "€ ‚ ƒ „ …" ;
$str = mb_convert_encoding($str, 'Windows-1252' ,'HTML-ENTITIES') ;
// Now $str should be a Windows-1252-encoded string.
// Let's detect its encoding:
echo mb_detect_encoding($str,'Windows-1252, ISO-8859-1, UTF-8') ;

该代码输出 ISO-8859-1 但它应该是 Windows-1252

这是怎么回事?

编辑:
更新示例,以响应 @raina77ow。

$str = "€‚ƒ„…" ; // no white-spaces
$str = mb_convert_encoding($str, 'Windows-1252' ,'HTML-ENTITIES') ;
$str = "Hello $str" ; // let's add some ascii characters
echo mb_detect_encoding($str,'Windows-1252, ISO-8859-1, UTF-8') ;

我又得到了错误的结果。

最佳答案

PHP 中 Windows-1252 的问题是它几乎永远不会被检测到,因为一旦您的文本包含 0x80 到 0x9f 之外的任何字符,它就不会被检测为 Windows- 1252.

这意味着如果您的字符串包含一个普通的 ASCII 字母,例如“A”,甚至是一个空格字符,PHP 会说这是无效的 Windows-1252,并且在您的情况下,会回退到下一个可能的编码,这是 ISO 8859-1。这是一个 PHP 错误,请参阅 https://bugs.php.net/bug.php?id=64667 .

关于php - 在 PHP 中检测正确的字符编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15844295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com