/**
  *
  * @group integration
  */
 public function test_is_encoding()
 {
     $strUtf8 = pack("H*", self::$hexUtf8);
     $strIso88591 = pack("H*", self::$hexIso88591);
     if (false) {
         echo '<pre>' . var_export(array('iso88591' => array('string' => $strIso88591, 'utf8 level' => tx_rnbase_util_Strings::isUtf8String($strIso88591), 'utf8 encoding' => tx_mklib_util_Encoding::detectUtfEncoding($strIso88591), 'bytelength' => mb_strlen($strIso88591, '8bit'), 'bin2hex' => bin2hex($strIso88591), 'is utf8' => tx_mklib_util_Encoding::isEncoding($strIso88591, 'UTF-8'), 'is iso88591' => tx_mklib_util_Encoding::isEncoding($strIso88591, 'ISO-8859-1')), 'utf8' => array('string' => $strUtf8, 'utf8 level' => tx_rnbase_util_Strings::isUtf8String($strUtf8), 'utf8 encoding' => tx_mklib_util_Encoding::detectUtfEncoding($strUtf8), 'bytelength' => mb_strlen($strUtf8, '8bit'), 'bin2hex' => bin2hex($strUtf8), 'is utf8' => tx_mklib_util_Encoding::isEncoding($strUtf8, 'UTF-8'), 'is iso88591' => tx_mklib_util_Encoding::isEncoding($strUtf8, 'ISO-8859-1')), 'DEBUG: ' . __FILE__ . '&' . __METHOD__ . ' Line: ' . __LINE__), true) . '</pre>';
     }
     // @TODO: remove me
     $this->assertTrue(tx_mklib_util_Encoding::isEncoding($strIso88591, 'ISO-8859-1'), '$strIso88591 ist NICHT ISO-8859-1');
     $this->assertFalse(tx_mklib_util_Encoding::isEncoding($strIso88591, 'UTF-8'), '$strIso88591 IST UTF-8');
     $this->assertTrue(tx_mklib_util_Encoding::isEncoding($strUtf8, 'UTF-8'), '$strUtf8 ist NICHT UTF-8');
     $this->assertFalse(tx_mklib_util_Encoding::isEncoding($strUtf8, 'ISO-8859-1'), '$strUtf8 IST ISO-8859-1');
 }
 public function test_isUtf8String()
 {
     // UTF-8 Text: 'The € - ä ö ü';
     $utf8Str = 'a:18:{i:0;s:2:"54";i:1;s:2:"68";i:2;s:2:"65";i:3;s:2:"20";i:4;s:2:"e2";i:5;s:2:"82";i:6;s:2:"ac";i:7;s:2:"20";i:8;s:2:"2d";i:9;s:2:"20";i:10;s:2:"c3";i:11;s:2:"a4";i:12;s:2:"20";i:13;s:2:"c3";i:14;s:2:"b6";i:15;s:2:"20";i:16;s:2:"c3";i:17;s:2:"bc";}';
     // ISO-Text: 'The EUR - ä ö ü';
     $iso8Str = 'a:15:{i:0;s:2:"54";i:1;s:2:"68";i:2;s:2:"65";i:3;s:2:"20";i:4;s:2:"45";i:5;s:2:"55";i:6;s:2:"52";i:7;s:2:"20";i:8;s:2:"2d";i:9;s:2:"20";i:10;s:2:"e4";i:11;s:2:"20";i:12;s:2:"f6";i:13;s:2:"20";i:14;s:2:"fc";}';
     $text = tx_rnbase_util_Strings::hexArr2bin(unserialize($utf8Str));
     $value = $text;
     $this->assertTrue(tx_rnbase_util_Strings::isUtf8String($value) > 0, 'String sollte in UTF-8 sein.');
     $text = tx_rnbase_util_Strings::hexArr2bin(unserialize($iso8Str));
     $value = $text;
     $this->assertTrue(tx_rnbase_util_Strings::isUtf8String($value) === FALSE, 'String sollte nicht in UTF-8 sein.');
 }
 /**
  * Liefert die
  * @param string $var
  * @return string|false
  */
 public static function detectUtfEncoding($var)
 {
     tx_rnbase::load('tx_rnbase_util_Strings');
     $bytes = tx_rnbase_util_Strings::isUtf8String($var);
     $encoding = FALSE;
     switch ($bytes) {
         case 2:
             $encoding = 'UTF-8';
             break;
         case 3:
             $encoding = 'UTF-16';
             break;
         case 4:
             $encoding = 'UTF-32';
             break;
     }
     return $encoding;
 }
 /**
  * Wir lassen als Dateinamen nur Buchstaben, Zahlen,
  * Bindestrich, Unterstrich und Punkt zu.
  * Umlaute und Sonderzeichen werden versucht in lesbare Buchstaben zu parsen.
  * Nicht zulässige Zeichen werden in einen Unterstrich umgewandelt.
  * Der Dateiuname wird optional in Kleinbuchstaben umgewandelt.
  *
  * @param string $name
  * @param boolean $forceLowerCase
  * @return string
  */
 public static function cleanupFileName($name, $forceLowerCase = TRUE)
 {
     $cleaned = $name;
     if (function_exists('iconv')) {
         tx_rnbase::load('tx_rnbase_util_Strings');
         $charset = tx_rnbase_util_Strings::isUtf8String($cleaned) ? 'UTF-8' : 'ISO-8859-1';
         $oldLocal = setlocale(LC_ALL, 0);
         setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu', 'de', 'ge');
         $cleaned = iconv($charset, 'ASCII//TRANSLIT', $cleaned);
         setlocale(LC_ALL, $oldLocal);
     }
     $cleaned = preg_replace('/[^A-Za-z0-9-_.]/', '_', $cleaned);
     return $forceLowerCase ? strtolower($cleaned) : $cleaned;
 }