Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.javascript > #5329

Re: String-Literals automatisiert in ASCII konvertieren?

From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Newsgroups de.comp.lang.javascript
Subject Re: String-Literals automatisiert in ASCII konvertieren?
Date 2022-09-29 20:38 +0200
Organization PointedEars Software (PES)
Message-ID <5613867.DvuYhMxLoT@PointedEars.de> (permalink)
References <877d1pm8w6.fsf@vagabond.tim-landscheidt.de> <ASCII-20220927121648@ram.dialup.fu-berlin.de> <12070813.O9o76ZdvQC@PointedEars.de> <87sfka2vyg.fsf@vagabond.tim-landscheidt.de>

Show all headers | View raw


Tim Landscheidt wrote:

> Thomas 'PointedEars' Lahn <PointedEars@web.de> wrote:
>>>>                                             gibt es einen
>>>>„Präprozessor“, der JavaScript-Dateien einliest, String-Lit-
>>>>erals gegebenenfalls nach ASCII umwandelt und dann wieder
>>>>ausgibt?
> 
>>>   Falls Nicht-ASCII-Zeichen nur in Zeichenfolgenliteralen
>>>   (und vielleicht noch in Kommentaren) vorkommen sollten,
>>>   können wir einfach alle Zeichen nach ASCII wandeln.
> 
>>>   Das sollte ein geeignetes Python-3.9-Skript sein:
> 
>>> with open( 'example.txt', mode='r', encoding='utf-8' )as stream:
>>>     source = stream.read()
>>>     for ch in source:
>>>         print( end=ch if ord( ch )<= 127 else rf'\u{ord(ch):04x}' )
> 
>> “\u{…}” ist (im Unterschied zu “\u…”, welches schon mit ECMAScript
>> Edition 2
>> [1998] eingeführt wurde) ein relativ neues syntaktisches Konstrukt'𐀀
>> (eingeführt mit ECMAScript Ed. 6 [2015]).  Das Ergebnis wird daher nurက
>> von neueren Script-Engines korrekt interpretiert werden können.  Bei
>> anderen führt es entweder dazu, dass die Escape-Sequenz angezeigt wird,
>> oder zu einem Syntaxfehler (Script kann nicht mehr compiliert werden).
> 
>> […]
> 
> Die geschweiften Klammern werden hier von Python verarbeitet
> (https://docs.python.org/3/reference/lexical_analysis.html#f-strings),
> wie auch Stefans Beispiel zeigte.

Richtig, das war mir später selbst aufgefallen (ich war nur noch nicht dazu 
gekommen, es zu erwähnen).

Richtig bleibt jedoch auch, dass Unicode heutzutage *weitaus* mehr 
Codepunkte enthält als nur die der Basic Multilingual Plane (BMP: U+0000 bis 
U+FFFF), was von Python spätestens ab Version 3.0 auch unterstützt wird.  
Daher erzeugt obiger Code falshce ECMAScript-Escape-Sequenzen für Zeichen 
ausserhalb der BMP (z. B. '\u10000', was als '\u1000' gefolgt von '0' 
interpretiert wird, also äquivalent zu 'က0' ist statt zu '𐀀' (Original).

Um diese Zeichen auch noch zu erfassen, müsste die generierte Escape-Sequenz
die Form '\u{…}' haben (in Python: rf'\u{{{ord(ch):x}}}'); das führt aber zu 
den von mir erwähnten Inkompatibilitäten.  Es gibt zwar einen Workaround 
über die Zerlegung in Surrogate Pairs (wie das mit meinem 
JSX:string/unicode.js:WideString möglich ist¹), das ist aber wiederum in 
diesem Fall in der Codierung nicht effizient.

Grundsätzlich ist Dein ganzer Ansatz in der Umsetzung fehlerträchtig und 
ineffizient; er bläht auch den Quelltext unnötig auf (im Worst Case auf das 
Neunfache) was auch die Ausführung des so modifizierten Codes ineffizient 
macht.  Es ist daher ein Ansatz vorzuziehen, der das tatsächliche Problem 
löst, d. h. die korrekte Serverkonfiguration.  Dieser hat auch den Vorteil, 
weitaus einfacher realisierbar zu sein (nämlich im Best Case lediglich eine 
.htaccess-Datei mit “AddCharset utf8 .js”).

-- 
PointedEars
<https://github.com/PointedEars> | <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2
Please do not cc me. /Bitte keine Kopien per E-Mail.

Back to de.comp.lang.javascript | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

String-Literals automatisiert in ASCII konvertieren? Tim Landscheidt <tim@tim-landscheidt.de> - 2022-09-27 10:03 +0000
  Re: String-Literals automatisiert in ASCII konvertieren? Stefan Reuther <stefan.news@arcor.de> - 2022-09-27 18:53 +0200
    Re: String-Literals automatisiert in ASCII konvertieren? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2022-10-04 14:33 +0200
  Re: String-Literals automatisiert in ASCII konvertieren? Tim Landscheidt <tim@tim-landscheidt.de> - 2022-09-28 11:50 +0000
  Re: String-Literals automatisiert in ASCII konvertieren? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2022-09-29 11:02 +0200
  Re: String-Literals automatisiert in ASCII konvertieren? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2022-09-29 11:03 +0200
    Re: String-Literals automatisiert in ASCII konvertieren? Tim Landscheidt <tim@tim-landscheidt.de> - 2022-09-29 12:42 +0000
      Re: String-Literals automatisiert in ASCII konvertieren? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2022-09-29 20:38 +0200
      Re: String-Literals automatisiert in ASCII konvertieren? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2022-09-29 20:40 +0200
        Re: String-Literals automatisiert in ASCII konvertieren? Tim Landscheidt <tim@tim-landscheidt.de> - 2022-09-29 23:12 +0000

csiph-web