Ich habe viele Probleme der String-Indizierung von C# zu Python. Im Grunde erzeugt die vorhandene Datenpipeline (in C#) einige Zeichenfolgenindizes für ein zu konsumierendes Python-Modell. Was passiert ist, dass diese zwei Sprachen verschiedene Codepunkte in ihren jeweiligen Unicode-Systemen verwenden, wie hier zusammengefasst: http://illegalargumentexception.blogspot.com/2010/04/i18n-comparing-character-encoding-in-c.htmlKann ich verschiedene Codepunkte in Python3 verwenden?
Daher sind die Zeichenfolge Länge und Indizes in C# (16-Bit, implizite UTF-16) nicht 100% relevant in Python (16 oder 32). Manchmal generiert Python eine kleinere Zeichenfolge als C#, wenn ein Zeichen mehr als 0xFFFF (mehr als 16 Bit) ist.
Die Frage ist: Gibt es eine Möglichkeit, sicherzustellen, dass die Indexierung und die Längen der Zeichenfolge identisch sind? Ist es möglich, Python zu zwingen, implizite 16-Bit wie in C# zu verwenden?
Ein konkretes Beispiel ist dies:
, Ṣur
Und seine utf-8 Bytes:
b'\xf0\x90\xa4\x91\xf0\x90\xa4\x85\xf0\x90\xa4\x93, \xe1\xb9\xa2ur'
In Python, die Länge der Saite 12 ist, wo wie C# Berichte 15. Indizierung wird auch von einer Sprache zur anderen.
Das ist keine Zeichenfolge in Python: Es ist eine Sequenz von rohen Bytes. –
Es ist eine Zeichenfolge ", Ṣur" mit utf-8-Codierung. Seit dem Kopieren und Einfügen sind die Zeichen möglicherweise nicht reproduzierbar. Ich kopiere und füge die Bytes für die Untersuchung ein. –
Wenn Sie '.decode ('utf-8')' aufrufen, haben Sie eine Zeichenfolge. Aber was Sie gezeigt haben, ist keine Zeichenfolge. –