Dieser Artikel enthält Details zur Unicode Unterstützung in Python.
Betriebsart
Cloud Abo
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
Texte werden in Vertec in Unicode abgespeichert (seit Vertec 6.5). Dementsprechend unterstützt Vertec alle rund 65'000 Zeichen der BMP ("Basic Multilingual Plane") und damit die Zeichen aller relevanten Sprachen, einschliesslich sämtlicher asiatischer Sprachen. Zeichen, die ausserhalb der BMP liegen und in Vertec eingetragen werden, werden durch ein ? ersetzt (was nur bei einigen wenigen Emojis der Fall sein dürfte).
Das Default Encoding in Python ist ANSI. Die Übertragung von einem Unicode String in das Default Encoding, also von Unicode nach ANSI, ist fehlertolerant gestaltet: Zeichen, die nicht umgewandelt werden können, führen nicht zu einem Fehler, sondern werden durch ? ersetzt.
str
Modul wird in Vertec zudem auf Unicode «umgebogen», weil eine Analyse von bestehendem Python Code bei Kunden gezeigt hat, dass es viele Verwendungen von str()
gibt, auch bei Daten, die bereits Strings sind, und die ohne diese Korrektur dann Fehler generieren würden.
Werden Strings verarbeitet und beispielsweise in einem File gespeichert oder an einen Webservice gesendet, muss dabei ein Unicode Encoding (wie z.B. UTF-8) gewählt werden, damit die Gegenseite diese korrekt lesen kann. Ohne ein explizites Encoding wie zum Beispiel string.encode("UTF-8")
kommt die implizite Umwandlung auf ANSI mit dem oben erwähnten Datenverlust von nicht-ANSI Zeichen als ? zum Tragen.
Auch beim Einlesen von Daten nach Vertec, sei es über das Öffnen einer Textdatei, über die Vertec XML Schnittstelle oder einem vtcapp.requestfilefromclient() sollte man sich ums Encoding kümmern, weil Datenverluste von nicht-ANSI Zeichen durch die Unicode Unterstützung unnötig sind. Liest man also z.B. ein Textfile ein, welches in UTF-8 encodiert ist, muss dieses korrekt dekodiert werden:
unicodestring = filecontent.decode("UTF-8")
Als Faustregel kann man sich merken, dass in Python