Hitzering: Wie filtere ich hochzahlen? wie ⁷ oder ⁵

Hallo,

ich habe einen String in dem sich "Hochzahlen" wie ⁵ befinden. Ich editiere meine Scripte mit Notepad++. Und trotz Umstellung auf die Codierung UTF8 bekomme ich nur einen viereck (falsche Codierung?)

Gerne würde ich den Spaß aus meinen String filtern, aber wenn Sie nicht in Notepad++ einbauen kann?

Vielleicht ist aber auch schon viel zu spät für dieses Posting, und ich brauch nur schlaf...

akzeptierte Antworten

  1. Hallo Hitzering,

    ich kann dir nicht sagen, warum dein Editor sie nicht darstellen kann, dazu kenne ich zu viele Details nicht. Inklusive Notepad++. Aber…

    Gerne würde ich den Spaß aus meinen String filtern, aber wenn Sie nicht in Notepad++ einbauen kann?

    wenn du wirklich hochgestellte Zahlen filtern willst, dann ist es wichtig zu wissen, welche Regex-Engine du verwendest. Es gibt Unicode-Kategorie No, die auf hochgestellte Nummern matcht: /\p{No}/u die meisten Browser allerdings können noch keine Unicode Categories in Regexen. Da müsstest du sowas wie http://xregexp.com/ verwenden.

    LG,
    CK

    1. Hallo Christian Kruse,

      ich kann dir nicht sagen, warum dein Editor sie nicht darstellen kann, dazu kenne ich zu viele Details nicht. Inklusive Notepad++. Aber…

      Ich kann dieses Verhalten bei Notepad++ bestätigen. Eine Vielzahl von Zeichen ist im verwendeten Font nicht vorhanden und wird deshalb als Rechteck dargestellt. Es handelt sich dabei nicht um ein Kodierungsproblem, wie @dedlfix es vermutet.

      Bis demnächst
      Matthias

      --
      Pantoffeltierchen haben keine Hobbys.
      ¯\_(ツ)_/¯
      1. Tach!

        Eine Vielzahl von Zeichen ist im verwendeten Font nicht vorhanden und wird deshalb als Rechteck dargestellt. Es handelt sich dabei nicht um ein Kodierungsproblem, wie @dedlfix es vermutet.

        Achja, das wollte ich auch noch schreiben. Fonts ohne Glyphen für bestimmte Zeichen als Ursache und kein Mechanismus, der einen Ersatzfont wählt. "Courier New" ist die Default-Einstellung und der hat die hochgestellten Zeichen nicht. Consolas hat aber. Umstellbar im Style Configurator.

        dedlfix.

        1. Hallo dedlfix,

          Style Configurator

          genau, und da nicht nur den global override, sondern auch den default style ändern. Das greift dann auch im Suchen/Ersetzen Dialog.

          Vorlagen für Superscript-Unicodezeichen findet man beispielsweise in der deutschen oder englischen Wikipedia (ich finde die englische übersichtlicher).

          Was grundsätzlich in Notepad++ auch geht, ist die Suche nach Zeichenkategorien. Was hier angebracht ist, wäre die Kategorie No oder Other_Number, die man mit \pNo, \p{No} oder \p{Other_Number} finden können sollte. Leider unterstützt Nodepad++ diese Kategorie nicht. Es gibt für die Kategoriesuche lediglich die Option, mit [[:unicode:]] generell nach Zeichen aus dem Bereich jenseits von U+00ff zu suchen.

          Rolf

          --
          sumpsi - posui - clusi
  2. Tach!

    ich habe einen String in dem sich "Hochzahlen" wie ⁵ befinden. Ich editiere meine Scripte mit Notepad++. Und trotz Umstellung auf die Codierung UTF8 bekomme ich nur einen viereck (falsche Codierung?)

    Das ist zu wenig detailreich, um zu erkennen, was du konkret machst und was das Problem sein könnte. Ein beliebtes Problem ist, zwar dem Empfänger mitzuteilen, dass das Dokument UTF-8 sei, aber die eigentliche Kodierung des Dokuments nicht entsprechend umzustellen. Wenn man nur eine Angabe im HTTP-Header oder Meta-Element ändert, hat das noch keine Auswirkungen darauf, wie der Editor das Dokument speichert.

    Das muss auch bei Kommunikation zwischen zwei Systemen beachtet werden: a) Zeichenkodierung dem Empfänger mitteilen, b) diese Kodierung auch verwenden, c) den Empfänger so konfigurieren, dass er diese Kodierung verarbeitet.

    Gerne würde ich den Spaß aus meinen String filtern, aber wenn Sie nicht in Notepad++ einbauen kann?

    Man kann zwar mit Unicode-Kategorien und Regexen arbeiten, so wie von CK vorgeschlagen, oder die Zeichen alle per Hand selbst als Zeichenklase notieren, aber dazu muss immer auch die Zeichenkodierung stimmen, sonst kann der Regexp-Mechanismus die Zeichen nicht erkennen.

    dedlfix.

    1. Hi,

      vielen Dank für die Antworten. Nun nach ein paar Stunden schlaf geht es besser. Also mein Script ist einfach, ich hohle mir mit CURL eine HTML Datei und lösche unerwünschte Zeichen mit https://www.php.net/manual/de/function.str-replace.php . Nur leider kann ich die Hochzahlen ( z.B. ⁵ ) nicht Filtern weil ich Sie "nicht" ins Script (Editor Notepad++) kopieren kann (bekomme nur ein Kästchen wie bei einer falschen Formatierung). Kopier ich diese Kästchen übrigens wieder hier ins Forum entsteht daraus wieder ⁵ !?!

      1. Hallo Hitzering,

        Nur leider kann ich die Hochzahlen ( z.B. ⁵ ) nicht Filtern weil ich Sie "nicht" ins Script (Editor Notepad++) kopieren kann (bekomme nur ein Kästchen wie bei einer falschen Formatierung). Kopier ich diese Kästchen übrigens wieder hier ins Forum entsteht daraus wieder ⁵ !?!

        Das heisst, dass die Kodierung durchaus richtig ist, aber der Font, den Notepad++ verwendet, sie nicht darstellen kann. Ganz wie Matthias vermutet hat.

        Das heisst auch, dass du sie in dein Notepad++ einfügen kannst, aber sie nur nicht sehen kannst (weil dem Font die Glyphe fehlt).

        LG,
        CK

  3. Hello,

    für notepad++ gibt es eine Reihe von Add Ons. So z. B. auch eine Hexdarstellung der Texte. Die hilft mir im ersten Anlauf immer, zumindest die Bytefolgen von Multibytezeichen zu identifizieren.

    Die kannst Du dann auch für PHP benutzen.

    Glück Auf
    Tom vom Berg

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.