MDL-41197 ignore all problems when converting texts

This commit is contained in:
Petr Škoda
2013-10-04 11:10:36 +02:00
parent 22084d5ea2
commit 1e8dcbd251
2 changed files with 12 additions and 3 deletions
+4
View File
@@ -91,6 +91,10 @@ class core_textlib_testcase extends advanced_testcase {
$this->assertSame(textlib::convert($utf8, 'utf-8', 'GB18030'), $str);
$this->assertSame(textlib::convert($str, 'GB18030', 'utf-8'), $utf8);
$this->assertSame(textlib::convert($utf8, 'utf-8', 'utf-8'), $utf8);
$utf8 = "Žluťoučký koníček";
$this->assertSame('Zlutouck\'y kon\'icek', core_text::convert($utf8, 'utf-8', 'ascii'));
$this->assertSame($utf8, core_text::convert($utf8.chr(130), 'utf-8', 'utf-8'));
}
/**
+8 -3
View File
@@ -178,11 +178,16 @@ class textlib {
return '';
}
if ($toCS === 'utf-8' and $fromCS === 'utf-8') {
return fix_utf8($text);
if ($fromCS === 'utf-8') {
$text = fix_utf8($text);
if ($toCS === 'utf-8') {
return $text;
}
}
$result = iconv($fromCS, $toCS.'//TRANSLIT', $text);
// Prevent any error notices, do not use //IGNORE so that we get
// consistent result from Typo3 if iconv fails.
$result = @iconv($fromCS, $toCS.'//TRANSLIT', $text);
if ($result === false or $result === '') {
// note: iconv is prone to return empty string when invalid char encountered, or false if encoding unsupported