Sokrates: HTMLEntities offline umwandeln in UTF-8

einen schönen, guten Tag,

kennt jemand ein Tool oder neudeutsch app, nein ganz einfach ein Prgramm mit dem ich aus HTMLEntities die ursprünglichen Zeichen in UTF erzeugen kann.

Wir haben unsere Website nun nach allen Regeln der Kunst auf UTF-8 umgestellt. SQL, PHP-mailversand, Darstellung der Seite in allen gängigen Browsern als UTF-8, Formulare etc. alles ganz fein. Das Problem ist, das wir zuvor die chinesichen Zeichen in den PHP files als numerische HTMLEntities eingegeben haben, es sich um hunderte von Dateien und Code-Schnipsel handelt und es eine heidenarbeit wird diese einzelnd in UTF-8 reinzukopieren. Kennst jemand ein konverter für sowas.

Ich möchte also in den php-Dateien, in der so lustige sachen stehen wie,

。在线申请的同时

die aber korrekt ausgegeben werden, die numerische entitis ersetzen durch die korrekten Zeichen in utf-8 (in dem Fall eben chinesisch)

Hab schon viele Stunden im Web gesucht, aber die konverter die dort angepriesen werden funktionieren nicht wirklich wie erwartet.

Danke im Voraus, Sokrates

  1. hi,

    。在线申请的同时

    in Perl so:
    print pack "U", hex '12290'; # usw.

    das erzeugt die entsprechenden bytes.

    Hotti

    1. Hallo hotti,

      wie ich auch schon dedlfix erklärt habe, möchte ich das offline aufbereiten. Es handelt sich außerdem um den gesamten chinesischem schriftsatz den es da zu übersetzen gilt, da kann ich mit suchen ersetzen per perl nicht wirklich ankommen. Aber danke für den Versuch.

      in Perl so:
      print pack "U", hex '12290'; # usw.

      1. hi,

        wie ich auch schon dedlfix erklärt habe, möchte ich das offline aufbereiten. Es handelt sich außerdem um den gesamten chinesischem schriftsatz den es da zu übersetzen gilt, da kann ich mit suchen ersetzen per perl nicht wirklich ankommen.

        Ja, Du vielleicht nicht.... aber ich würde das schon mit Perl offline aufbereiten ;-)

        Aber danke für den Versuch.

        Was für'n Versuch? Wenn ich das hätte heute machen sollen, wäre das jetzt fertig.

        Hotti

        1. Hallo Hotti,

          den Versuch mir zu Helfen meinte ich. Mit dem Wort versuch wollte ich nicht andeuten, daß du das Problem nicht lößen könntest, nur dass ich mit deinem Lösungsvorschlag nicht genug anfangen kann. Der Empfänger ist an dieser stelle etwas beschränkt ;)

          Mit Perl kenne ich mich leider gar nicht aus. Der Grund warum ich das jetzt für unmachbar hielt ist einfach die ungehäure Anzahl an Zeichen die ich da ersetzen müsste. Kannst du mir den ein tipp geben wo ich anfangen könnte mich einzulesen wie ich so ein suchen ersetzen script in Perl schreibe?

          Danke im Voraus.

  2. Hi!

    kennt jemand ein Tool oder neudeutsch app, nein ganz einfach ein Prgramm mit dem ich aus HTMLEntities die ursprünglichen Zeichen in UTF erzeugen kann.

    Geht auch eine PHP-Funktion?

    Das Problem ist, das wir zuvor die chinesichen Zeichen in den PHP files als numerische HTMLEntities eingegeben haben, es sich um hunderte von Dateien und Code-Schnipsel handelt und es eine heidenarbeit wird diese einzelnd in UTF-8 reinzukopieren. Kennst jemand ein konverter für sowas.

    html_entity_decode()

    Ich möchte also in den php-Dateien, [...] die numerische entitis ersetzen durch die korrekten Zeichen in utf-8 (in dem Fall eben chinesisch)

    Numerische Entities gibt es nicht. Das wären Numerische Zeichenreferenzen (NCR - numeric character reference). Entitys sind die Dinger mit den mehr oder weniger sprechenden Namen (z.B. nbsp, auml). Es ist auch komplett egal, was für ein Zeichen durch die Zahl repräsentiert wird. Sowohl NCRs als auch die korrespondierende UTF-8-Sequenzen sind eindeutig in das jeweilige Gegenstück konvertierbar.

    Lo!

    1. Hallo dedlfix,

      es geht um NCRs und das on the Fly umwandeln per php möchte ich eigentlich nicht machen, weil es mir auch darum geht den Quellcode ein wenig kleiner zu machen. auch müsste ich dann an tausenden von stellen die Ausgabe der Zeichen unmklamern was kaum leistbar ist. Es handelt sich um eine wirklich recht große anzahl von Dateien die ich offline aufbereiten möchte.

      Numerische Entities gibt es nicht. Das wären Numerische Zeichenreferenzen (NCR - numeric character reference). Entitys sind die Dinger mit den mehr oder weniger sprechenden Namen (z.B. nbsp, auml). Es ist auch komplett egal, was für ein Zeichen durch die Zahl repräsentiert wird. Sowohl NCRs als auch die korrespondierende UTF-8-Sequenzen sind eindeutig in das jeweilige Gegenstück konvertierbar.

      Entschuldige die falsche terminologie und danke für den Hinweis.

      Sokrates

      1. Hallo,

        es geht um NCRs und das on the Fly umwandeln per php möchte ich eigentlich nicht machen, weil es mir auch darum geht den Quellcode ein wenig kleiner zu machen.

        Ich denke nicht, dass dedlfix an "on-the-fly-Umwandlung dachte", sondern eher an PHP an der Kommandozeile:

        Backup erstellen
        relevante Dateien ermitteln.
        Für jede dieser Dateien
            Datei einlesen
            html_entity_decode auf Inhalt anwenden
            Geänderten Inhalt abspeichern
        Ende Für

        Freundliche Grüße

        Vinzenz

        1. Hallo vinzenz,

          hmm, ja, das klingt gar nicht mal schlecht. Habe ich gar nicht dran gedacht das ich php auch nutzen könnte um die dateien dauerhaft umzuschreiben. Allerdings wird die ausgabe dann die php funktionen der seite ja nicht mehr enthalten nachdem sie durch den interpreter gelaufen sind und die chinesischen texte bwefinden sich innerhalb von php funktionen, also fürchte geht das auch nicht.

          Es müsste schon offline eine manipulation im stil von suchen ersetzen sein nur geht das nicht wie beim türkischen oder so manuell weil es eben nicht nur 15 oder 30 Zeichen sind sondern gleich mal ein paar tausend. es muss doch sowas geben. Ansonsten bleibt mir nur noch Copy and Paste. Vielleicht ist das auch die beste lösung.
          Vielen Dank für den Hinweis.

          Hallo,

          es geht um NCRs und das on the Fly umwandeln per php möchte ich eigentlich nicht machen, weil es mir auch darum geht den Quellcode ein wenig kleiner zu machen.

          Ich denke nicht, dass dedlfix an "on-the-fly-Umwandlung dachte", sondern eher an PHP an der Kommandozeile:

          Backup erstellen
          relevante Dateien ermitteln.
          Für jede dieser Dateien
              Datei einlesen
              html_entity_decode auf Inhalt anwenden
              Geänderten Inhalt abspeichern
          Ende Für

          Freundliche Grüße

          Vinzenz

          1. Hallo,

            Allerdings wird die ausgabe dann die php funktionen der seite ja nicht mehr enthalten nachdem sie durch den interpreter gelaufen sind

            die Dateien laufen nicht durch den Interpreter. Einlesen zum Beispiel per file_get_contents().

            und die chinesischen texte bwefinden sich innerhalb von php funktionen, also fürchte geht das auch nicht.

            Warum sollte das nicht gehen?

            Freundliche Grüße

            Vinzenz

  3. @@Sokrates:

    nuqneH

    […] durch die korrekten Zeichen in utf-8 (in dem Fall eben chinesisch)

    Für Dokumente in Chinesisch solltest du vielleich UTF-16 in Erwägung ziehen. http://rishida.net/blog/?p=445%23comment-9089

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. @@Gunnar Bittersmann:

      nuqneH

      http://rishida.net/blog/?p=445%23comment-9089

      Oh, da hat Bug 806 wieder zugeschlagen.

      Der richtige Link ist http://rishida.net/blog/?p=445#comment-9089

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
    2. Hi!

      […] durch die korrekten Zeichen in utf-8 (in dem Fall eben chinesisch)
      Für Dokumente in Chinesisch solltest du vielleich UTF-16 in Erwägung ziehen.

      Würde ich in dem Fall nicht empfehlen. Die Texte sind in PHP-Code-Dateien enthalten. Außerdem gibt es Texte in anderen Sprachen. Wenn nun die einen PHP-Dateien UTF-8 sind, anderen aber UTF-16, muss man dies ständig beachten und gegebenenfalls umkodieren. Es ist beispielsweise nicht möglich, UTF-16 (oder UCS-2) mit MySQL zu sprechen. Ich würde eine einzige Kodierung nehmen, und die paar Extra-Byte für 3-Byte-Zeichen machen das Kraut nicht fett.

      Lo!