Unicode in xlsx wird nicht konvertiert sondern angezeigt

Dateien, die von Excel oder (!) libreoffice als xlsx gespeichert werden, beinhalten für einen Unterstrich den String _x005F. Dieser wird auch so in Calc angezeigt, statt durch einen Unterstrich ersetzt zu werden. Excel 2010 liest die Datei korrekt ein.

MWE: in Calc in eine beliebige Zelle ‘a_x2290_b’ schreiben. Als xlsx - Microsoft Excel, speichern; erneut einlesen.

Speichern als xlsm funktioniert zwar, kann aber unter Umständen nicht von Excel gelesen werden, da das Format für Dateien mit Makros gedacht ist.

Edit: Getestet mit Versionen ab 5.0.6 bis 6.1.2

Ein einzelner _ Unterstrich wird nicht als _x005F_ gespeichert, da muss schon mehr zusammen kommen, z.B. ein Text in der Form _xHHHH_ der als _x005F_xHHHH_ “escaped” wird, wie in deinem a_x2290_b Beispiel das als a_x005F_x2290_b gespeichert wird. Siehe ECMA-376-1:2016 Seite 3736 Paragraph 22.4.2.4 bstr (Basic String) fuer Beschreibung. Das ist Microsoft’s Weg, in XML 1.0 ungueltige Zeichen zu speichern, mit dem Nachteil dass dadurch jedes Vorkommen von _xHHHH_ verratzt ist.

Calc handelt diese z.Zt. beim Einlesen nicht.

In deinem Beispiel kannst du aber auch einfach literal a⊐b schreiben, U+2209 ist kein in XML 1.0 ungueltiges Zeichen. Das sind nur Zeichen < 0x20 mit Ausnahme von 0x09, 0x0a und 0x0d.

+1
Gibt es einen workaround, z.B. andere Arten von escapes, a la \_ /_ ?

Workaround wofuer? Der workaround ist einfach keine _xHHHH_ Sequenz zu verwenden. Oder hat es einen bestimmten Grund warum du genau diese Sequenz brauchst? Schon eine eingefuegte 0 wie in _0xHHHH_ sollte ausreichen wenn es dir nur um die inline Hex-Notation eines Unicode-Zeichens geht.