mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-12 19:16:45 +00:00
Resolve iconv //IGNORE//TRANSLIT Inconsistency Between Systems
This commit is contained in:
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user