Többnyelvű és emojik támogatása a Nyelvi szolgáltatás funkcióiban
A többnyelvű és emojis támogatás olyan Unicode-kódolásokhoz vezetett, amelyek egynél több kódpontot használnak egyetlen megjelenített karakter, az úgynevezett grapheme ábrázolásához. Az emojik 🌷 👍 például több karaktert is használhatnak az alakzat megírásához a vizuális attribútumokhoz, például a bőrszínhez. Hasonlóképpen, a hindi szó अनुच्छेद
öt betűként és három egyesítési jelként van kódolva.
A lehetséges többnyelvű és emojikódolások eltérő hossza miatt a Nyelvi szolgáltatás funkciói eltolódásokat adhatnak vissza a válaszban.
Eltolások az API-válaszban
Amikor eltolásokat ad vissza az API-válasz, ne feledje:
- A válasz elemei a meghívott végpontra jellemzőek lehetnek.
- A HTTP POST/GET hasznos adatok UTF-8-ban vannak kódolva, ami lehet, hogy nem az ügyféloldali fordító vagy az operációs rendszer alapértelmezett karakterkódolása.
- Az eltolások a Unicode 8.0.0 szabványon alapuló gráfszámokat jelölik, nem a karakterszámokat.
Részsztringek kinyerése szövegből eltolásokkal
Az eltolások problémákat okozhatnak a karakteralapú részsztringmetódusok használatakor, például a .NET substring() metódus használatakor. Az egyik probléma az, hogy egy eltolás miatt egy sztringmetódus a vége helyett egy többkarakteres grapheme-kódolás közepén végződhet.
A .NET-ben fontolja meg a StringInfo osztály használatát, amely lehetővé teszi, hogy a sztringeket szöveges elemek sorozataként használja az egyes karakterobjektumok helyett. Az előnyben részesített szoftverkörnyezetben grapheme splitter kódtárakat is kereshet.
A Nyelvi szolgáltatás funkciói ezeket a szöveges elemeket is visszaadják a kényelem érdekében.
Az eltolást visszaküldött végpontok támogatják a paramétert stringIndexType
. Ez a paraméter az offset
API-kimenet és length
attribútumait a kért sztring iterációs sémának megfelelően módosítja. Jelenleg három típust támogatunk:
textElement_v8
(alapértelmezett): a Unicode 8.0.0 szabvány által meghatározott gráfok felett iterálunicodeCodePoint
: a Python 3 alapértelmezett sémája, a Unicode-kódpontokon keresztül iterálutf16CodeUnit
: iterálja az UTF-16 kódegységeket, amely a JavaScript, a Java és a .NET alapértelmezett sémája
Ha a stringIndexType
kért egyezik a választott programozási környezettel, a sztringek kinyerése standard sztring- vagy szeletelési módszerekkel végezhető el.