Meertalige en emoji-ondersteuning in taalservicefuncties
Meertalige en emoji-ondersteuning heeft geleid tot Unicode-coderingen die meer dan één codepunt gebruiken om één weergegeven teken weer te geven, een grafeme genoemd. Emoji's zoals 🌷 en 👍 kunnen bijvoorbeeld meerdere tekens gebruiken om de vorm samen te stellen met extra tekens voor visuele kenmerken, zoals huidskleur. Op dezelfde manier wordt het Hindi-woord अनुच्छेद
gecodeerd als vijf letters en drie combinatiemarkeringen.
Vanwege de verschillende lengten van mogelijke meertalige coderingen en emoji-coderingen, kunnen taalservicefuncties verschuivingen retourneren in het antwoord.
Verschuivingen in het API-antwoord
Wanneer verschuivingen worden geretourneerd door het API-antwoord, moet u het volgende onthouden:
- Elementen in het antwoord kunnen specifiek zijn voor het eindpunt dat is aangeroepen.
- HTTP POST/GET-nettoladingen worden gecodeerd in UTF-8, wat al dan niet de standaardtekencodering is op uw compiler of besturingssysteem aan de clientzijde.
- Verschuivingen verwijzen naar het aantal grafeme's op basis van de Unicode 8.0.0-standaard , niet het aantal tekens.
Subtekenreeksen extraheren uit tekst met verschuivingen
Verschuivingen kunnen problemen veroorzaken bij het gebruik van op tekens gebaseerde subtekenreeksmethoden, bijvoorbeeld de methode .NET substring(). Een probleem is dat een verschuiving ertoe kan leiden dat een subtekenreeksmethode eindigt in het midden van een grafeme-codering met meerdere tekens in plaats van het einde.
In .NET kunt u de klasse StringInfo gebruiken, waarmee u met een tekenreeks kunt werken als een reeks tekstelementen in plaats van afzonderlijke tekenobjecten. U kunt ook zoeken naar grapheme splitterbibliotheken in de softwareomgeving van uw voorkeur.
De functies van de taalservice retourneren deze tekstelementen ook voor het gemak.
Eindpunten die een offset retourneren, ondersteunen de stringIndexType
parameter. Met deze parameter worden de offset
kenmerken en length
in de API-uitvoer aangepast aan het aangevraagde tekenreeksiteratieschema. Momenteel ondersteunen we drie typen:
textElement_v8
(standaard): itereert over grafemen zoals gedefinieerd door de Unicode 8.0.0-standaardunicodeCodePoint
: itereert over Unicode-codepunten, het standaardschema voor Python 3utf16CodeUnit
: itereert via UTF-16-code-eenheden, het standaardschema voor JavaScript, Java en .NET
Als de stringIndexType
aangevraagde overeenkomt met de gewenste programmeeromgeving, kan subtekenreeksextractie worden uitgevoerd met behulp van standaard subtekenreeks- of segmentmethoden.