Dela via


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

Stöd för flerspråkiga och emojier 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 skriva 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

Kom ihåg följande när förskjutningar returneras i API-svaret:

  • 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 grapheme-kodning med flera tecken i stället för slutet.

I .NET bör du överväga att använda klassen StringInfo , som 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 standardmetoder för delsträngar eller sektorer.

Se även