Robert Allerstorfer: UTF-8 Zeichen in die Unicode-Nummer konvertieren

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.

  1. 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

    1. 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.

  2. 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.