Skip to content

Commit 548664b

Browse files
committed
Resolve iconv //IGNORE//TRANSLIT Inconsistency Between Systems
1 parent 00dc184 commit 548664b

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/PhpSpreadsheet/Shared/StringHelper.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,6 @@ public static function convertEncoding(string $textValue, string $to, string $fr
480480
if (false !== $result) {
481481
return $result;
482482
}
483-
var_dump($textValue, $from, $to . self::$iconvOptions);
484483
}
485484

486485
return (string) mb_convert_encoding($textValue, $to, $from);

tests/PhpSpreadsheetTests/Shared/StringHelperTest.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,21 @@ public function testNoIconv(): void
140140
$to = 'UTF-8';
141141
self::assertSame($expected, StringHelper::convertEncoding($string, $to, $from));
142142
self::assertSame('EUR', StringHelper::convertEncoding('', 'ISO-8859-1', 'UTF-8'), 'transliterated');
143-
self::assertSame('', StringHelper::convertEncoding('', 'ISO-8859-1', 'UTF-8'), 'no transliteration so ignored');
144143
self::assertSame($expected, StringHelperNoIconv::convertEncoding($string, $to, $from));
145144
self::assertSame('?', StringHelperNoIconv::convertEncoding('', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark');
146145
self::assertSame($expected, StringHelperNoIconv2::convertEncoding($string, $to, $from));
147146
self::assertSame('?', StringHelperNoIconv2::convertEncoding('', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark');
148147
self::assertSame($expected, StringHelperNoIconv3::convertEncoding($string, $to, $from));
149148
self::assertSame('?', StringHelperNoIconv3::convertEncoding('', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark');
149+
150+
$noTransliteration = '';
151+
$ignoreResult = '?';
152+
if (StringHelper::getIsIconvEnabled()) {
153+
// There is inconsistency in how //IGNORE//TRANSLIT operates
154+
$ignoreResult = iconv('UTF-8', 'ISO-8859-1//IGNORE//TRANSLIT', $noTransliteration);
155+
self::assertContains($ignoreResult, ['', '?']);
156+
}
157+
$result = StringHelper::convertEncoding($noTransliteration, 'ISO-8859-1', 'UTF-8');
158+
self::assertSame($ignoreResult, $result, 'no transliteration available');
150159
}
151160
}

0 commit comments

Comments
 (0)