Bug #81390 [Asn]: mb_detect_encoding() regression

From: Date: Tue, 07 Dec 2021 12:07:39 +0000
Subject: Bug #81390 [Asn]: mb_detect_encoding() regression
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-238251@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81390&edit=1 ID: 81390 Updated by: alexdowad@php.net Reported by: alec at alec dot pl Summary: mb_detect_encoding() regression Status: Assigned Type: Bug Package: mbstring related PHP Version: 8.1.0beta5 Assigned To: alexdowad Block user comment: N Private report: N New Comment: Hi, Alec. OK, I tried converting the text to ISO-8859-2. PHP 7 returns "ISO-8859-1". My new code for encoding detection returns "Windows-1252". Why the difference?? I did a bit of analysis, and found... PHP 7 was not able to auto-detect Windows-1252 at all. PHP 8.1 is. However, the heuristics which it uses cannot tell any difference between ISO-8859-{1,2} or Windows-1252 in this case... so it returns the one which appears earlier in the list. In this case, you put Windows-1252 earlier. Let me know if you have any comments. Previous Comments: ------------------------------------------------------------------------ [2021-12-06 07:01:37] alec at alec dot pl That's better, but did you convert it to iso-8859-2 and then try to detect? ------------------------------------------------------------------------ [2021-12-05 16:01:08] alexdowad@php.net Hi, Alec. Please keep up the great work with testing. I tried the text which you linked to: --------------- $text = "Ola szykuje się do szkoły. Jest już w piątej klasie. Dawniej obawiała się szkoły, teraz bardzo lubi tam chodzić. W szkole nie tylko uczy się ciekawych rzeczy – spotyka też swoich kolegów i koleżanki. Najbardziej lubi spędzać czas ze swoimi przyjaciółmi z klasy – są to Monika i Michał. Ola lubi wszystkie przedmioty. Wie, że nauka jest ważna. Najmilej spędza czas na lekcjach o przyrodzie – Ola bardzo lubi zwierzęta. W klasie Oli mieszka chomik. Wszystkie dzieci dbają o niego. Przynoszą mu jedzenie i głaszczą. Ola nie ma własnego zwierzęcia, więc chomik to kolejny powód dla którego lubi chodzić do szkoły. Szkoła Oli jest blisko jej domu. Ola chodzi do szkoły sama. Gdy Ola była młodsza – zawsze odprowadzał ją tam tata, mama lub babcia. Przed każdym dniem szkoły Ola pakuje plecak. Sprawdza czy są wszystkie książki i zeszyty. Sprawdza też piórnik – czy jest tam linijka, długopis, ołówek, gumka i mazaki. W przerwie między lekcjami Ola je w szkole obiad. Dzięki temu ma dużo siły na dalszą naukę. Po szkole droga do domu jest krótka, ale zajmuje Oli dużo czasu. Dlaczego? Bo to czas, w którym lubi rozmawiać z koleżankami i kolegami podczas spaceru do domu. Ola jednak wie, że nie może wrócić późno."; echo mb_detect_encoding($text,'utf-8,windows-1252,iso-8859-1,iso-8859-2', true), "\n"; ------------- And then, in my shell: ----------------- 17:56 ~prog/php/php-src % ./sapi/cli/php test.php UTF-8 ----------------- Looks good to me! That's on the tip of my development branch, which (crucially) does include the latest patch for Polish... the one which you said you didn't use. Please do your best to see if you can still find breakage anywhere! If you find anything else which is arguably a bug, I will be very, very happy to fix it! ------------------------------------------------------------------------ [2021-11-30 12:28:24] cmb@php.net Related To: Bug #81676 ------------------------------------------------------------------------ [2021-11-28 10:38:30] alec at alec dot pl I've another case which is either a bug or an indication that the method can't really distinguish utf-8 from iso-8859-*/windows-125X charsets. I'm not sure it's only a Polish thing, but most likely not. I took a sample text from https://lingua.com/pl/polski/czytanie/czas-do-szkoly/ and used it with mb_detect_encoding($text,'utf-8,windows-1252,iso-8859-1,iso-8859-2', true); It returns windows-1252, but it should be utf-8. If I convert the text to iso-8859-2, it still returns windows-1252. ps. I didn't use your latest patch for Polish. ------------------------------------------------------------------------ [2021-11-25 08:42:10] alexdowad@php.net Thanks, Alec. Hopefully this will be merged soon: https://github.com/php/php-src/pull/7659/commits/889d2fe3bafdb8e9da39b2297d6e9f13a518584e ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=81390 -- Edit this bug report at https://bugs.php.net/bug.php?id=81390&edit=1

« previous php.bugs (#238251) next »