Podpora více jazyků a emoji ve funkcích služby Language

Podpora více jazyků a emoji vedla k kódování Unicode, která používají více než jeden bod kódu k reprezentaci jednoho zobrazeného znaku označovaného jako grapheme. Například emoji mají rády 🌷 a 👍 můžou použít několik znaků k vytvoření obrazce s dalšími znaky pro vizuální atributy, jako je například tón pleti. Podobně je hindština zakódovaná अनुच्छेद 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 kódování a kódování emoji mohou funkce služby Language vracet posuny v odpovědi.

Posuny v odpovědi rozhraní API

Vždy, když se vrátí posuny odpovědi rozhraní API, mějte na paměti:

  • Prvky v odpovědi můžou být specifické pro volaný koncový bod.
  • Datové části HTTP POST/GET jsou kódované ve formátu UTF-8, což může, ale nemusí být výchozí kódování znaků v kompilátoru nebo operačním systému na straně klienta.
  • Posuny odkazují na počty grafů založené na standardu Unicode 8.0.0 , nikoli na počty znaků.

Extrahování podřetěžců z textu s odsazením

Posuny mohou způsobit problémy při použití metod podřetězení založených na znacích, například metody .NET substring(). Jedním z problémů je, že posun může způsobit, že metoda podřetězení skončí uprostřed víceznakového kódování grapheme místo konce.

V rozhraní .NET zvažte použití třídy StringInfo , která umožňuje pracovat s řetězcem jako řadou textových prvků, nikoli s jednotlivými objekty znaků. Můžete také vyhledat knihovny grafeme splitter ve vašem upřednostňovaném softwarovém prostředí.

Funkce služby Language pro usnadnění také vrací tyto textové prvky.

Koncové body, které vrátí posun, parametr podporují stringIndexType . Tento parametr upraví offset atributy a length ve výstupu rozhraní API tak, aby odpovídaly požadovanému schématu iterace řetězců. V současné době podporujeme tři typy:

stringIndexType Pokud požadovaný řetězec odpovídá programovacímu prostředí podle výběru, je možné extrakci podřetěců provést pomocí standardních metod podřetěžce nebo řezu.

Viz také