Partilhar via


Suporte multilíngue e a emojis em recursos do serviço de idiomas

O suporte multilíngue e aos emojis levou a codificações Unicode que usam mais de um ponto de código para representar um único caractere exibido, chamado grafema. Por exemplo, emojis como 🌷 e 👍 podem usar vários caracteres para compor sua forma, com caracteres adicionais para atributos visuais, como tom de pele. Da mesma forma, a palavra अनुच्छेद hindi é codificada como cinco letras e três marcas combinadas.

Devido aos diferentes comprimentos de possíveis codificações multilíngues e emojis, as funcionalidades do serviço de língua podem retornar deslocamentos no resultado.

Compensações na resposta da API

Sempre que os deslocamentos forem retornados a resposta da API, lembre-se:

  • Os elementos na resposta podem ser específicos do endpoint chamado.
  • As cargas úteis HTTP POST/GET são codificadas em UTF-8, que pode ou não ser a codificação de caracteres padrão no seu compilador ou sistema operativo do lado do cliente.
  • Os deslocamentos referem-se a contagens de grafema baseadas no padrão Unicode 8.0.0 , não a contagens de caracteres.

Extraindo substrings do texto com deslocamentos

Os deslocamentos podem causar problemas ao usar métodos de substring baseados em caracteres, por exemplo, o método .NET substring(). Um problema é que um deslocamento pode fazer com que um método de substring termine no meio de uma codificação de grafema de vários caracteres em vez do final.

No .NET, considere usar a classe StringInfo , que permite que você trabalhe com uma cadeia de caracteres como uma série de elementos textuais, em vez de objetos de caracteres individuais. Você também pode procurar bibliotecas para divisão de grafemas no seu ambiente de software preferido.

Os recursos do serviço de idioma também retornam esses elementos textuais, por conveniência.

Os endpoints que retornam um deslocamento darão suporte ao parâmetro stringIndexType. Este parâmetro ajusta os atributos offset e length na saída da API para corresponder ao esquema de iteração de cadeia de caracteres solicitado. Atualmente, suportamos três tipos:

Se o solicitado corresponder ao ambiente de programação escolhido, a stringIndexType extração de substring pode ser feita usando métodos padrão de substring ou slice.

Consulte também