Unterstützung für mehrere Sprachen und Emojis in Sprachdienstfeatures
Die Unterstützung für mehrere Sprachen und Emojis hat zu Unicode-Codierungen geführt, die ein einzelnes angezeigtes Zeichen (ein so genanntes Graphem) mit mehreren Codepunkten darstellen. Für Emojis wie 🌷 und 👍 werden beispielsweise mehrere Zeichen zum Erstellen der Form und zusätzliche Zeichen für visuelle Attribute wie etwa die Hautfarbe verwendet. Ebenso wird das Hindi-Wort अनुच्छेद
mit fünf Buchstaben und drei Verbindungszeichen codiert.
Aufgrund der unterschiedlichen Längen der möglichen mehrsprachigen Codierungen und Emoji-Codierungen geben die Sprachdienstfeatures in der Antwort möglicherweise Offsets zurück.
Versätze in der API-Antwort
Wenn Offsets in der API-Antwort zurückgegeben werden, denken Sie an Folgendes:
- Elemente in der Antwort können spezifisch für den aufgerufenen Endpunkt sein.
- HTTP POST/GET-Nutzlasten werden in UTF-8 codiert. Dies kann die Standardzeichencodierung Ihres clientseitigen Compilers oder Betriebssystems sein oder auch nicht.
- Versätze beziehen sich auf die auf dem Unicode 8.0.0-Standard basierende Graphemanzahl, nicht auf die Zeichenanzahl.
Extrahieren von Teilzeichenfolgen aus Text mit Versätzen
Versätze können Probleme verursachen, wenn zeichenbasierte substring-Methoden verwendet werden, z. B. die .NET-Methode substring(). Eines dieser Probleme ist, dass eine substring-Methode aufgrund eines Versatzes in der Mitte einer Graphemcodierung mit mehreren Zeichen beendet werden kann und nicht an deren Ende.
Verwenden Sie in .NET ggf. die StringInfo-Klasse. Sie ermöglicht es Ihnen, eine Zeichenfolge nicht als einzelne Zeichenobjekte, sondern als eine Reihe von Textelementen zu verarbeiten. Sie können auch nach Graphem-Splitter-Bibliotheken in Ihrer bevorzugten Softwareumgebung suchen.
Die Sprachdienstfeatures geben diese Textelemente ebenfalls der Einfachheit halber zurück.
Endpunkte, die einen Offset zurückgeben, unterstützen den stringIndexType
-Parameter. Mit diesem Parameter werden die offset
- und length
-Attribute in der API-Ausgabe an das angeforderte Zeichenfolgeniterationsschema angepasst. Derzeit werden drei Typen unterstützt:
textElement_v8
(Standardwert): Durchläuft Grapheme gemäß der Definition des Unicode 8.0.0-Standards.unicodeCodePoint
: Durchläuft Unicode-Codepunkte, das Standardschema für Python 3.utf16CodeUnit
: Durchläuft UTF-16-Codeeinheiten, das Standardschema für JavaScript, Java und .NET.
Wenn der angeforderte stringIndexType
der gewünschten Programmierumgebung entspricht, kann die Extraktion von Substrings mithilfe von Substringstandard- oder -slicemethoden erfolgen.