Parcourir la source

:octocat: Kanji, Hanzi: do not mess with mb_detect_order(), feed the expected encodings directly into mb_detect_encoding()

(cherry picked from commit 3a610d28381e36f5b48f6def04a8662e2f7bb8d7)
smiley il y a 3 mois
Parent
commit
9b576d5cd8
2 fichiers modifiés avec 8 ajouts et 7 suppressions
  1. 6 3
      src/Data/Hanzi.php
  2. 2 4
      src/Data/Kanji.php

+ 6 - 3
src/Data/Hanzi.php

@@ -13,7 +13,7 @@ namespace chillerlan\QRCode\Data;
 use chillerlan\QRCode\Common\{BitBuffer, Mode};
 use Throwable;
 use function chr, implode, intdiv, is_string, mb_convert_encoding, mb_detect_encoding,
-	mb_detect_order, mb_internal_encoding, mb_strlen, ord, sprintf, strlen;
+	mb_internal_encoding, mb_strlen, ord, sprintf, strlen;
 
 /**
  * Hanzi (simplified Chinese) mode, GBT18284-2000: 13-bit double-byte characters from the GB2312/GB18030 character set
@@ -67,9 +67,12 @@ final class Hanzi extends QRDataModeAbstract{
 	 * @throws \chillerlan\QRCode\Data\QRCodeDataException
 	 */
 	public static function convertEncoding(string $string):string{
-		mb_detect_order([mb_internal_encoding(), 'UTF-8', 'GB2312', 'GB18030', 'CP936', 'EUC-CN', 'HZ']);
 
-		$detected = mb_detect_encoding($string, null, true);
+		$detected = mb_detect_encoding(
+			$string,
+			[mb_internal_encoding(), 'UTF-8', 'GB2312', 'GB18030', 'CP936', 'EUC-CN', 'HZ'],
+			true,
+		);
 
 		if($detected === false){
 			throw new QRCodeDataException('mb_detect_encoding error');

+ 2 - 4
src/Data/Kanji.php

@@ -13,7 +13,7 @@ namespace chillerlan\QRCode\Data;
 use chillerlan\QRCode\Common\{BitBuffer, Mode};
 use Throwable;
 use function chr, implode, intdiv, is_string, mb_convert_encoding, mb_detect_encoding,
-	mb_detect_order, mb_internal_encoding, mb_strlen, ord, sprintf, strlen;
+	mb_internal_encoding, mb_strlen, ord, sprintf, strlen;
 
 /**
  * Kanji mode: 13-bit double-byte characters from the Shift-JIS character set
@@ -60,9 +60,7 @@ final class Kanji extends QRDataModeAbstract{
 	 * @throws \chillerlan\QRCode\Data\QRCodeDataException
 	 */
 	public static function convertEncoding(string $string):string{
-		mb_detect_order([mb_internal_encoding(), 'UTF-8', 'SJIS', 'SJIS-2004']);
-
-		$detected = mb_detect_encoding($string, null, true);
+		$detected = mb_detect_encoding($string, [mb_internal_encoding(), 'UTF-8', 'SJIS', 'SJIS-2004'], true);
 
 		if($detected === false){
 			throw new QRCodeDataException('mb_detect_encoding error');