PHP: UTF-16 zu UTF-8 konvertieren

Published 2008-09-08, 11:18

Und die zweite Heldentat gleich hinterher:
Eine kleine PHP-Funktion (evtl. unvollständig, bei meinem Anwendungsfall hat es ausgereicht) zum konvertieren von UTF-16-Daten zu UTF-8:

function utf16_to_utf8($str) {
$c0 = ord($str[0]);
$c1 = ord($str[1]);
if ($c0 == 0xFE && $c1 == 0xFF) {
$be = true;
} else if ($c0 == 0xFF && $c1 == 0xFE) {
$be = false;
} else {
return $str;
}
$str = substr($str, 2);
$len = strlen($str);
$dec = '';
for ($i = 0; $i < $len; $i += 2) { $c = ($be) ? ord($str[$i]) << 8 | ord($str[$i + 1]) : ord($str[$i + 1]) << 8 | ord($str[$i]); if ($c >= 0x0001 && $c <= 0x007F) { $dec .= chr($c); } else if ($c > 0x07FF) {
$dec .= chr(0xE0 | (($c >> 12) & 0x0F));
$dec .= chr(0x80 | (($c >> 6) & 0x3F));
$dec .= chr(0x80 | (($c >> 0) & 0x3F));
} else {
$dec .= chr(0xC0 | (($c >> 6) & 0x1F));
$dec .= chr(0x80 | (($c >> 0) & 0x3F));
}
}
return $dec;
}
Quelle: http://www.moddular.org/log/utf16-to-utf8

Update:
Manchmal sollte ich erst nachdenken, und dann nach Code googlen. Das hier reicht natürlich auch vollkommen aus und ist sicher besser getestet:
$utf8 = mb_convert_encoding($utf16, 'UTF-8', 'UTF-16LE');

Topic(s): Kram 1 single comment - :/

Diskussion zum Artikel

» Selbst kommentieren

  1. ( 1 )

    Das ist doch was worauf ich unsere Programmierer mal stoßen sollte. Die reden in der Mittagspause nämlich ausschliesslich über UTF-8 und ich komm nicht mit.

    Comment von Wanda am 10. September 2008

Selbst kommentieren

Trackback-URI, Kommentarfeed. XML-Feed





16 queries. 0,095 seconds.