RAD Studio 10.1 Berlin: Deutsche Umlaute und AnsiString



  • Hallo zusammen,

    hat jemand eine Ahnung, warum das hier unter dem Berlin 10.1 nicht mehr funktioniert? Ich weise einem AnsiString einen Text mit deutschen Umlauten zu, aber er enthält nach der Zuweisung keine Umlaute mehr, sondern "aou?". Unter dem 10.0 Seattle funktioniert das noch einwandfrei.

    void screw_me_up()
    {
       AnsiString s = "äöü"; // wird zu aou
    }
    

    Die Stimmung kippt... 😡
    Die Embarcadero Entwickler bauen mit jedem Release neue, äh, Features ein, die bestehenden Code brechen. Das Schlimmsten daran ist jedoch, dass das Verhalten erst zur Laufzeit auftritt und vom Compiler anstandslos übersetzt wird.
    Ich hab die Nase von Embarcadero echt voll, mal wieder.

    Edit:
    Frage vergessen 😉
    Weiß jemand von euch, wie man das hinbekommt, dass der AnsiString deutsche Umlaute wieder richtig behandelt?



  • Man kan im Editor ja die Codepage für die Sourcedateien festlegen. Damit das funktioniert, müßte die wohl auf Windows-1252 festgelegt sein. Und weil AnsiString == AnsiStringT<0> == String mit der aktuellen Codepage des Prozesses(?), passieren willkürliche Dinge, wenn man das Programm auf einem Windows mit anderen Codepage-Einstellungen ausführt. Kannst du mal checken, ob eine dieser Voraussetzungen nicht erfüllt ist?

    Falls ihr bisher BCC benutzt habt und jetzt auf Clang umgestiegen seid (was du dann aber bestimmt im Eingangsposting erwähnt hättest), kann es sein, daß die IDE die Einstellungen über die Compiler-Codepage nicht korrekt oder gar nicht an den Compiler weitergibt. Die Flags sind je nach Compiler nämlich unterschiedlich, cf. http://docwiki.embarcadero.com/RADStudio/Seattle/en/C%2B%2B_Compiler_Advanced.

    Mittelfristig sollte man natürlich die Dateien als UTF-8 speichern und Unicode-Stringliterale benutzen.


Anmelden zum Antworten