Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Podpora multijazyčných a emoji vedla k kódování Unicode, které používají více než jeden kódový bod k reprezentaci jednoho zobrazeného znaku, označovaného jako grafém. Například emoji lajky 🌷 a 👍 můžou použít několik znaků k vytvoření obrazce s dalšími znaky pro vizuální atributy, jako je tón kůže. Podobně je hindština slovo अनुच्छेद
kódováno jako pět písmen a tři kombinační značky.
Vzhledem k různým délkám možných vícejazyčných a emoji kódování můžou jazykové služby v odpovědi vracet offsety.
Posuny v odpovědi rozhraní API
Kdykoli jsou posuny vráceny v odpovědi rozhraní API, nezapomeňte:
- Prvky v odpovědi můžou být specifické pro koncový bod, který byl volán.
- Datové části HTTP POST/GET jsou kódované v kódování UTF-8, což může nebo nemusí být výchozí kódování znaků v kompilátoru nebo operačním systému na straně klienta.
- Offsety odkazují na počty grafémů založené na standardu Unicode 8.0.0, nikoli na počty znaků.
Extrahování podřetězců z textu s offsety
Posuny znaků mohou způsobovat problémy při použití metod podřetězců založených na znakech, například metoda .NET substring(). Jedním z problémů je, že posun může způsobit, že metoda podřetězení skončí uprostřed kódování grafeme s více znaky namísto konce.
V .NET zvažte použití StringInfo třídy, která umožňuje pracovat s řetězcem jako řadu textových prvků, nikoli s jednotlivými objekty znaků. V preferovaném softwarovém prostředí můžete také vyhledat knihovny rozdělení grapheme.
Funkce služby Language vrací tyto textové prvky také pro usnadnění.
Koncové body, které vrátí offset, budou podporovat parametr stringIndexType
. Tento parametr upraví atributy offset
a length
ve výstupu rozhraní API tak, aby odpovídaly požadovanému schématu iterování řetězců. V současné době podporujeme tři typy:
-
textElement_v8
(výchozí): iteruje přes grafy definované standardem Unicode 8.0.0 -
unicodeCodePoint
: iteruje přes Unicode kódy bodů, výchozí schéma pro Python 3 -
utf16CodeUnit
: Iteruje přes jednotky kódu UTF-16, výchozí schéma pro JavaScript, Javu a .NET.
Pokud požadavek odpovídá zvolenému programovacímu prostředí, lze extrakci podřetězce provést pomocí standardních metod podřetězce nebo řezu.