Schrift
[thread]8843[/thread]

utf8 encoding mit Encode

Leser: 5


<< >> 4 Einträge, 1 Seite
Gast Gast
 2007-03-15 01:34
#75056 #75056
Hallo,
es ist wohl schon zu spät, ich krieg die Ausgabe irgendwie nicht hin. Die Zeichen sind aus einer UTF8 Website, ich habe die also im String und will die in Latin1 konvertieren. Funktionier irgenwie nicht - hat jemand eine Idee?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use Encode;
use warnings;

binmode(STDOUT, ":encoding(cp437)");

$a="%C3%9F";
$a = encode("iso-8859-1", $a);
print $a."\n";

$a="%C3%9F";
$a= encode("iso-8859-1", decode("utf8", $a));
print $a."\n";
ptk
 2007-03-15 09:37
#75057 #75057
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du bekommst Zeichen aus einer externen Quelle. Externe Quellen liefern immer "bytes" oder "octets", die du nach "characters" konvertieren willst. Schau in der Encode-Manpage nach, welche von den beiden Methoden encode/decode von octets nach characters umwandelt (ich kann mir das nie merken, aber in allerneuesten Encode-Versionen gibt es bytes2str und str2bytes). Als Encoding gibst du dort das Encoding der externen Quelle, also in diesem Fall utf8 an.

Wenn du dein STDOUT bereits auf cp437 gesetzt hast, brauchst du nichst mehr weiter zu machen. Perl konvertiert dann für dich alles nach cp437, was nach STDOUT ausgegeben wird.

iso-8859-1 brauchst du hier gar nicht. Oder doch?\n\n

<!--EDIT|ptk|1173944259-->
Franz
 2007-03-16 12:28
#75058 #75058
User since
2006-07-12
31 Artikel
BenutzerIn
[default_avatar]
so geht's

Code: (dl )
1
2
3
4
5
6
7
8
9
binmode(STDOUT, ":encoding(cp437)");

use URI::Escape;
use Encode;

$str="%C3%B6";
$oct = uri_unescape($str);
$string = decode("utf-8", $oct);
print $string;
\n\n

<!--EDIT|Franz|1174051515-->
GwenDragon
 2007-03-16 15:36
#75059 #75059
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
"%C3%B6" ist aber kein Unicode sondern eine URL-Kodierung!
Wenn müsste es "\x{C3B6}" sein!

//EDIT: Aha, um 14:25 gemerkt ;)\n\n

<!--EDIT|GwenDragon|1174052393-->
<< >> 4 Einträge, 1 Seite



View all threads created 2007-03-15 01:34.