keikei: Brauche hilfe mit unicode?

Hi,

bin gerade dabei mich in Perl einzuarbeiten und bin deshalb nicht gerade bewandert wie das alles so geht.

Mein problem ist die codierung und decodierung von internationalen Schriftzeichen, ich grabbe z.B. von einer Webseite per regex bestimmte Textbereiche und schreibe sie in eine Mysql Datenbank. Wie kann ich den text codieren so das ich ihn dann später wieder verwenden kann? Denn momentan bekomme ich anstatt z.B. chinesischer Zeichen diese 听网络的声 in meine Datenbank.

Ich kann mir vorstellen, daß ich irgendwas übersehen hab oder man in Perl da vielleicht ein bestimmtes Modul braucht.

Beispiel:
use utf8;
use URI;
use URI::Escape;
use LWP::Simple;
use DBI;
use Encode;

$decodedstring = uri_escape("奇");
print $decodedstring;

gibt dann zurück:
Can't escape \x{5947}, try uri_escape_utf8()

es zeigt mir ja schonmall den code an, aber ich bekomme ihn nicht... und  wenn ich es dann mit uri_escape_utf8() mache bekomme ich das zurück:
Undefined subroutine &main::uri_escape_utf8

Es wäre super wenn mir da jemand weiter helfen könnte. Danke

  1. Wie kann ich den text codieren so das ich ihn dann später wieder verwenden kann? Denn momentan bekomme ich anstatt z.B. chinesischer Zeichen diese 听网络的声 in meine Datenbank.

    Das ist vermutlich UTF-8 in einer nicht-utf8-fähigen oder -eingestellten Datenbank. Du kannst es so weiterverwenden.

    es zeigt mir ja schonmall den code an, aber ich bekomme ihn nicht... und  wenn ich es dann mit uri_escape_utf8() mache bekomme ich das zurück:
    Undefined subroutine &main::uri_escape_utf8

    use URI::Escape qw/uri_escape_utf8/; und dann ganz normal verwenden oder Namensraum angeben: URI::Escape::uri_escape_utf8("件");

    1. Danke werde es mal ausprobieren. Ich verwende eine MySQL DB....

      Wie kann ich den text codieren so das ich ihn dann später wieder verwenden kann? Denn momentan bekomme ich anstatt z.B. chinesischer Zeichen diese 听网络的声 in meine Datenbank.

      Das ist vermutlich UTF-8 in einer nicht-utf8-fähigen oder -eingestellten Datenbank. Du kannst es so weiterverwenden.

      es zeigt mir ja schonmall den code an, aber ich bekomme ihn nicht... und  wenn ich es dann mit uri_escape_utf8() mache bekomme ich das zurück:
      Undefined subroutine &main::uri_escape_utf8

      use URI::Escape qw/uri_escape_utf8/; und dann ganz normal verwenden oder Namensraum angeben: URI::Escape::uri_escape_utf8("件");

      1. Hi keikei,

        Bitte kein TOFU; das schmeckt nicht jedem.

        Gruß,
        Gunnar

        --
        „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)