dedlfix: Wiki: Fehler auf der Regex-Seite

Beitrag lesen

problematische Seite

Tach!

Das Beispiel beginnt nach dem üblichen Einbinden von strict und warnings mit dem Laden des utf8-Moduls, das einzig dem Zweck dient, Perl mitzuteilen, dass der Sourcecode in utf-8 geschrieben ist.

Das ist nicht richtig. utf8 ist ein Pragma was bewirkt, dass der Interpreter die im Script notierten Literale als "utf-8-kodierte Zeichenketten" betrachtet und nicht als Bytesequenzen.

"The use utf8 pragma tells the Perl parser to allow UTF-8 in the program text in the current lexical scope. The no utf8 pragma tells Perl to switch back to treating the source text as literal bytes in the current lexical scope. [...] Do not use this pragma for anything else than telling Perl that your script is written in UTF-8." sagt Perldoc. Und weiterhin:

"Bytes in the source text that are not in the ASCII character set will be treated as being part of a literal UTF-8 sequence. This includes most literals such as identifier names, string constants, and constant regular expression patterns."

Ich kann nicht erkennen, warum der oben zitierte Satz nicht richtig sein soll - größtenteils jedenfalls. Geht es lediglich darum, dass das Wort Modul falsch ist? Ist er mit dem Ändern in die Formulierung "mit dem Setzen des utf8-Pragmas" korrekter?

Die folgende Zeile binmode STDOUT, ":utf8" sorgt dafür, dass auch die Ausgabe in utf-8 erfolgt. Ohne diese Zeile könnten Umlaute als Fragezeichen oder ähnliches ausgegeben werden.

Auch falsch. Diese Zeile sorgt dafür, dass eben keine utf-8-kodierte Zeichenketten nach STDOUT geschickt werden sondern Bytesequenzen.

Verstehe ich nicht den Einwurf.

"To output UTF-8, use the :encoding or :utf8 output layer. Prepending binmode(STDOUT, ":utf8"); to this sample program ensures that the output is completely UTF-8, and removes the program's warning." sagt Perldoc.

Was wird denn für ein "häh?" ausgegeben, wenn nicht 68 c3 a4 68 3f? Verstehst du unter "utf-8-kodierte Zeichenketten" etwas anderes als die gemäß UTF-8-Kodierungsvorschrift in Bytes umgewandelten Unicode-Codepoints der jeweiligen Zeichen?

dedlfix.

7 47

Wiki: Perl-Bereich depubliziert

  1. 0
  2. 0
    1. 1
      1. 0
        1. 1
    2. 0
      1. 0
        1. 2
          1. 0
          2. 0
  3. 0
  4. 0

    Wiki: Fehler auf der Regex-Seite

    1. 2
      1. 0
        1. 1
          1. -3
            1. -1

              Beitragsbewertung

            2. 2
              1. -1
                1. 2
                  1. 0
                    1. 0
                      1. 0
                        1. 0
                          1. 0
                            1. 1
                              1. 0
                            2. 1
                              1. 0
                                1. 0
                              2. 0
                  2. 0
                    1. -1
            3. 0
              1. 0
                1. 0
                  1. 0
          2. -2
        2. 2
          1. 0
    2. 0
      1. 0
        1. 0
          1. 0
            1. 3
  5. 1

    Perl und Unicode