From 2fa306b5a720144600b902691b70dc63ed67d059 Mon Sep 17 00:00:00 2001 From: Rike-cz Date: Tue, 31 Mar 2020 17:15:17 +0200 Subject: [PATCH] Add iconv fallback support for mbstring unsupported encodings (#5015) --- .../importexportcontroller/TranscodeFilter.php | 18 +++++++++++++----- modules/backend/lang/en/lang.php | 1 + modules/backend/models/ImportModel.php | 1 + 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/modules/backend/behaviors/importexportcontroller/TranscodeFilter.php b/modules/backend/behaviors/importexportcontroller/TranscodeFilter.php index d684c912b..93f99c1ae 100644 --- a/modules/backend/behaviors/importexportcontroller/TranscodeFilter.php +++ b/modules/backend/behaviors/importexportcontroller/TranscodeFilter.php @@ -20,11 +20,19 @@ class TranscodeFilter extends php_user_filter public function filter($in, $out, &$consumed, $closing) { while ($resource = stream_bucket_make_writeable($in)) { - $resource->data = @mb_convert_encoding( - $resource->data, - $this->encodingTo, - $this->encodingFrom - ); + if (in_array($this->encodingFrom, mb_list_encodings())) { + $resource->data = @mb_convert_encoding( + $resource->data, + $this->encodingTo, + $this->encodingFrom + ); + } else { + $resource->data = @iconv( + $this->encodingFrom, + $this->encodingTo, + $resource->data + ); + } $consumed += $resource->datalen; diff --git a/modules/backend/lang/en/lang.php b/modules/backend/lang/en/lang.php index 27e814100..de48f0b8e 100644 --- a/modules/backend/lang/en/lang.php +++ b/modules/backend/lang/en/lang.php @@ -550,6 +550,7 @@ return [ 'iso_8859_13' => 'ISO-8859-13 (Latin-7, Baltic Rim)', 'iso_8859_14' => 'ISO-8859-14 (Latin-8, Celtic)', 'iso_8859_15' => 'ISO-8859-15 (Latin-9, Western European revision with euro sign)', + 'windows_1250' => 'Windows-1250 (CP1250, Central and Eastern European)', 'windows_1251' => 'Windows-1251 (CP1251)', 'windows_1252' => 'Windows-1252 (CP1252)', ], diff --git a/modules/backend/models/ImportModel.php b/modules/backend/models/ImportModel.php index 34622b46b..12f937a16 100644 --- a/modules/backend/models/ImportModel.php +++ b/modules/backend/models/ImportModel.php @@ -231,6 +231,7 @@ abstract class ImportModel extends Model 'iso-8859-13', 'iso-8859-14', 'iso-8859-15', + 'Windows-1250', 'Windows-1251', 'Windows-1252' ];