[php-src] Issue #10481: wrong mb_detect_encoding since php8.1 for very simple utf-8 strings

From: Date: Wed, 01 Feb 2023 11:58:28 +0000
Subject: [php-src] Issue #10481: wrong mb_detect_encoding since php8.1 for very simple utf-8 strings
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-243605@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/10481
Author: cristicotet

### Description

The following code:

https://3v4l.org/0fOjG

```php
$str1 = '14';
$str2 = 'DQ';
$encodings1 = ['ASCII', 'UTF-8', 'UTF-16', 'UTF-16LE'];
$encodings2 = ['UTF-8', 'UTF-16', 'UTF-16LE'];
echo bin2hex($str1) . ' - ' .  mb_detect_encoding($str1, $encodings1,
true)."\n";
echo bin2hex($str1) . ' - ' .  mb_detect_encoding($str1, $encodings2,
true)."\n";
echo bin2hex($str2) . ' - ' .  mb_detect_encoding($str2, $encodings1,
true)."\n";
echo bin2hex($str2) . ' - ' .  mb_detect_encoding($str2, $encodings2,
true)."\n";
```

Resulted in this output:
```
# version 8.1.0 - 8.2.2 - wrong output
3134 - UTF-16
3134 - UTF-16
4451 - UTF-16LE
4451 - UTF-16LE
```

But I expected this output instead:
```
# version 5.4.0 - 8.0.27 - correct output
3134 - ASCII
3134 - UTF-8
4451 - ASCII
4451 - UTF-8
```

### PHP Version

PHP 8.2.2

### Operating System

Red Hat Enterprise Linux 9.1 / CentOS Linux 7


Thread (1 message)

  • cristicotet
« previous php.bugs (#243605) next »