Sdílet prostřednictvím


Podpora vícejazyčných a emoji ve funkcích služeb jazyka

Podpora vícejazyčných 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 grafeme. 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 kódování vícejazyčných a emoji můžou funkce služeb jazyka v odpovědi vracet posuny.

Posuny v odpovědi rozhraní API

Vždy, když se vrátí posuny 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.
  • Posuny odkazují na počty grafeme založené na standardu Unicode 8.0.0 , nikoli počtu znaků.

Extrahování podřetězení z textu s posuny

Posuny můžou způsobovat problémy při použití metod podřetězení založených na znakech, například metody podřetězení .NET. 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í posun, budou podporovat stringIndexType parametr. Tento parametr upraví offset atributy 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:

  • textElement_v8(výchozí): iteruje přes grafy definované standardem Unicode 8.0.0
  • unicodeCodePoint: iteruje body kódu Unicode, 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.

stringIndexType Pokud požadované odpovídá zvolenému programovacímu prostředí, lze extrakci podřetětěc provést pomocí standardních metod podřetětěc nebo řezu.

Viz také