Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'w50_MDL-36245_m24_convert' of git://github.com/skodak/m…

…oodle into MOODLE_24_STABLE
  • Loading branch information...
commit a8ccdd288082eb27ffcbc9037ff47c30f3a990c2 2 parents 656581f + 15dbd27
@stronk7 stronk7 authored
Showing with 11 additions and 2 deletions.
  1. +6 −0 lib/tests/textlib_test.php
  2. +5 −2 lib/textlib.class.php
View
6 lib/tests/textlib_test.php
@@ -62,29 +62,35 @@ public function test_convert() {
$this->assertSame(textlib::convert($iso2, 'iso-8859-2', 'win-1250'), $win);
$this->assertSame(textlib::convert($iso2, 'iso-8859-2', 'iso-8859-2'), $iso2);
$this->assertSame(textlib::convert($win, 'win-1250', 'cp1250'), $win);
+ $this->assertSame(textlib::convert($utf8, 'utf-8', 'utf-8'), $utf8);
$utf8 = '言語設定';
$str = pack("H*", "b8c0b8ecc0dfc4ea"); //EUC-JP
$this->assertSame(textlib::convert($utf8, 'utf-8', 'EUC-JP'), $str);
$this->assertSame(textlib::convert($str, 'EUC-JP', 'utf-8'), $utf8);
+ $this->assertSame(textlib::convert($utf8, 'utf-8', 'utf-8'), $utf8);
$str = pack("H*", "1b24423840386c405f446a1b2842"); //ISO-2022-JP
$this->assertSame(textlib::convert($utf8, 'utf-8', 'ISO-2022-JP'), $str);
$this->assertSame(textlib::convert($str, 'ISO-2022-JP', 'utf-8'), $utf8);
+ $this->assertSame(textlib::convert($utf8, 'utf-8', 'utf-8'), $utf8);
$str = pack("H*", "8cbe8cea90dd92e8"); //SHIFT-JIS
$this->assertSame(textlib::convert($utf8, 'utf-8', 'SHIFT-JIS'), $str);
$this->assertSame(textlib::convert($str, 'SHIFT-JIS', 'utf-8'), $utf8);
+ $this->assertSame(textlib::convert($utf8, 'utf-8', 'utf-8'), $utf8);
$utf8 = '简体中文';
$str = pack("H*", "bcf2cce5d6d0cec4"); //GB2312
$this->assertSame(textlib::convert($utf8, 'utf-8', 'GB2312'), $str);
$this->assertSame(textlib::convert($str, 'GB2312', 'utf-8'), $utf8);
+ $this->assertSame(textlib::convert($utf8, 'utf-8', 'utf-8'), $utf8);
$str = pack("H*", "bcf2cce5d6d0cec4"); //GB18030
$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);
}
/**
View
7 lib/textlib.class.php
@@ -161,8 +161,7 @@ public static function parse_charset($charset) {
/**
* Converts the text between different encodings. It uses iconv extension with //TRANSLIT parameter,
- * falls back to typo3.
- * Returns false if fails.
+ * falls back to typo3. If both source and target are utf-8 it tries to fix invalid characters only.
*
* @param string $text
* @param string $fromCS source encoding
@@ -179,6 +178,10 @@ public static function convert($text, $fromCS, $toCS='utf-8') {
return '';
}
+ if ($toCS === 'utf-8' and $fromCS === 'utf-8') {
+ return fix_utf8($text);
+ }
+
$result = iconv($fromCS, $toCS.'//TRANSLIT', $text);
if ($result === false or $result === '') {
Please sign in to comment.
Something went wrong with that request. Please try again.