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:
textElement_v8
(standard): itererar över grafer enligt definitionen i Unicode 8.0.0-standardenunicodeCodePoint
: itererar över Unicode Code Points, standardschemat för Python 3utf16CodeUnit
: itererar över UTF-16-kodenheter, standardschemat för JavaScript, Java och .NET
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
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för