UTF-8 Zeichen in die Unicode-Nummer konvertieren
Robert Allerstorfer
- perl
Hi,
welche methode ist empfehlenswert, um ein zeichen, das in UTF-8 vorliegt (zB. als 3-Byte-Sequenz "\x{e6a49c}"), in die Nummer zu konvertieren, durch die dieses Zeichen in Unicode repräsentiert wird (wäre im beispiel "U+691C")?
Habe ein bisschen mit Perl 5.8's Encode modul herumexperimentiert, bin aber leider noch nicht zum ziel gekommen.
Danke,
rob.
Tach
welche methode ist empfehlenswert, um ein zeichen, das in UTF-8 vorliegt (zB. als 3-Byte-Sequenz "\x{e6a49c}"), in die Nummer zu konvertieren, durch die dieses Zeichen in Unicode repräsentiert wird (wäre im beispiel "U+691C")?
http://www.ietf.org/rfc/rfc2279.txt?number=2279
enthält alle nötigen Angaben.
Andreas
Hi,
http://www.ietf.org/rfc/rfc2279.txt?number=2279
enthält alle nötigen Angaben.
Andreas
danke für den verweis auf das "gesetz" ;-) Mittlerweile hab ich eine wunderbare lösung gefunden:
#!/usr/bin/perl -w
use strict;
use 5.008;
use Encode;
my $string = v230.164.156;
my $unicode = uc(sprintf "%lx", join("\n", map( ord($_),split(//,$string))));
print "Content-Type: text/html\n\n";
print "<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />";
print "<pre>U+$unicode\t$string";
Hat vielleicht jemand ne idee, wie das in $]<5.008 funktioniert, also in Perl 5.6.1 oder auch 5.6.0, evt. sogar unter 5.005_03? das schöne in 5.8 ist, dass Encode ein standard modul ist! Nur hat sich diese version bisher kaum verbreitet, so scheint es zumindest.
rob.
welche methode ist empfehlenswert, um ein zeichen, das in UTF-8 vorliegt (zB. als 3-Byte-Sequenz "\x{e6a49c}"), in die Nummer zu konvertieren, durch die dieses Zeichen in Unicode repräsentiert wird (wäre im beispiel "U+691C")?
Unicode::String bietet dafür die unpack()-Methode.