Resolve iconv //IGNORE//TRANSLIT Inconsistency Between Systems

This commit is contained in:
oleibman
2025-12-02 02:40:17 -08:00
parent 00dc18404d
commit 548664b3fa
2 changed files with 10 additions and 2 deletions
@@ -480,7 +480,6 @@ class StringHelper
if (false !== $result) {
return $result;
}
var_dump($textValue, $from, $to . self::$iconvOptions);
}
return (string) mb_convert_encoding($textValue, $to, $from);
@@ -140,12 +140,21 @@ class StringHelperTest extends TestCase
$to = 'UTF-8';
self::assertSame($expected, StringHelper::convertEncoding($string, $to, $from));
self::assertSame('EUR', StringHelper::convertEncoding('€', 'ISO-8859-1', 'UTF-8'), 'transliterated');
self::assertSame('', StringHelper::convertEncoding('ツ', 'ISO-8859-1', 'UTF-8'), 'no transliteration so ignored');
self::assertSame($expected, StringHelperNoIconv::convertEncoding($string, $to, $from));
self::assertSame('?', StringHelperNoIconv::convertEncoding('€', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark');
self::assertSame($expected, StringHelperNoIconv2::convertEncoding($string, $to, $from));
self::assertSame('?', StringHelperNoIconv2::convertEncoding('€', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark');
self::assertSame($expected, StringHelperNoIconv3::convertEncoding($string, $to, $from));
self::assertSame('?', StringHelperNoIconv3::convertEncoding('€', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark');
$noTransliteration = 'ツ';
$ignoreResult = '?';
if (StringHelper::getIsIconvEnabled()) {
// There is inconsistency in how //IGNORE//TRANSLIT operates
$ignoreResult = iconv('UTF-8', 'ISO-8859-1//IGNORE//TRANSLIT', $noTransliteration);
self::assertContains($ignoreResult, ['', '?']);
}
$result = StringHelper::convertEncoding($noTransliteration, 'ISO-8859-1', 'UTF-8');
self::assertSame($ignoreResult, $result, 'no transliteration available');
}
}