Sdílet prostřednictvím


Podpora více jazyků a emoji ve funkcích jazykových služeb

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.

Viz také