Stöd för flerspråkiga och emojis i språktjänstfunktioner

Stöd för flerspråkiga och emojis har lett till Unicode-kodningar som använder mer än en kodpunkt för att representera ett enda tecken som visas, som kallas grapheme. Till exempel kan emojis som 🌷 och 👍 använda flera tecken för att skapa formen med ytterligare tecken för visuella attribut, till exempel hudton. På samma sätt kodas hindi-ordet अनुच्छेद som fem bokstäver och tre kombinationstecken.

På grund av de olika längderna för möjliga flerspråkiga kodningar och emojikodningar kan språktjänstfunktioner returnera förskjutningar i svaret.

Förskjutningar i API-svaret

När förskjutningar returneras api-svaret ska du komma ihåg:

  • Element i svaret kan vara specifika för slutpunkten som anropades.
  • HTTP POST/GET-nyttolaster kodas i UTF-8, vilket kan vara standardteckenkodningen på kompilatorn eller operativsystemet på klientsidan.
  • Förskjutningar refererar till grapheme-antal baserat på Unicode 8.0.0-standarden , inte teckenantal.

Extrahera delsträngar från text med förskjutningar

Förskjutningar kan orsaka problem när du använder teckenbaserade understrängsmetoder, till exempel metoden .NET substring(). Ett problem är att en förskjutning kan leda till att en delsträngsmetod slutar mitt i en grafkodning med flera tecken i stället för slutet.

Överväg att använda klassen StringInfo i .NET, vilket gör att du kan arbeta med en sträng som en serie textelement i stället för enskilda teckenobjekt. Du kan också leta efter grapheme splitter-bibliotek i önskad programvarumiljö.

Språktjänstfunktionerna returnerar även dessa textelement för enkelhetens skull.

Slutpunkter som returnerar en förskjutning stöder parametern stringIndexType . Den här parametern justerar attributen offset och length i API-utdata så att de matchar det begärda sträng-iterationsschemat. För närvarande stöder vi tre typer:

Om den stringIndexType begärda matchar den programmeringsmiljö som du väljer kan extrahering av delsträngar göras med hjälp av standard-understrängs- eller segmentmetoder.

Se även