Meertalige ondersteuning en emoji-ondersteuning in taalservicefuncties
Meertalige ondersteuning voor emoji's heeft geleid tot Unicode-coderingen die meer dan één codepunt gebruiken om één weergegeven teken weer te geven, een graaf genoemd. Emoji's zoals 🌷 en 👍 kunnen bijvoorbeeld verschillende tekens gebruiken om de vorm samen te stellen met extra tekens voor visuele kenmerken, zoals huidtoon. Op dezelfde manier wordt het Hindi-woord अनुच्छेद
gecodeerd als vijf letters en drie combinatiemarkeringen.
Vanwege de verschillende lengten van mogelijke meertalige en emoji-coderingen, kunnen taalservicefuncties verschuivingen in het antwoord retourneren.
Verschuivingen in het API-antwoord
Wanneer offsets worden geretourneerd, moet u het API-antwoord onthouden:
- Elementen in het antwoord kunnen specifiek zijn voor het eindpunt dat is aangeroepen.
- HTTP POST/GET-nettoladingen worden gecodeerd in UTF-8. Dit is mogelijk of niet de standaardtekencodering op de compiler of het besturingssysteem aan de clientzijde.
- Verschuivingen verwijzen naar graafaantallen op basis van de Unicode 8.0.0-standaard , niet het aantal tekens.
Subtekenreeksen extraheren uit tekst met offsets
Verschuivingen kunnen problemen veroorzaken bij het gebruik van op tekens gebaseerde subtekenreeksmethoden, bijvoorbeeld de methode .NET-subtekenreeks(). Een probleem is dat een offset ertoe kan leiden dat een subtekenreeksmethode in het midden van een grapheme-codering met meerdere tekens eindigt 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 uw favoriete softwareomgeving.
De taalservicefuncties retourneren deze tekstelementen ook voor het gemak.
Eindpunten die een offset retourneren, ondersteunen de stringIndexType
parameter. Met deze parameter worden de offset
en length
kenmerken in de API-uitvoer aangepast aan het aangevraagde tekenreeksiteratieschema. Momenteel ondersteunen we drie typen:
textElement_v8
(standaard): itereert over graphemes 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 het stringIndexType
aangevraagde overeenkomt met de programmeeromgeving van keuze, kan subtekenreeksextractie worden uitgevoerd met behulp van standaardsubtekenreeksen of segmentmethoden.