Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
-
textElement_v8
(padrão): itera sobre grafemas conforme definido pelo padrão Unicode 8.0.0 -
unicodeCodePoint
: itera sobre os pontos de código Unicode, que é o esquema padrão no Python 3 -
utf16CodeUnit
: itera sobre Unidades de Código UTF-16, o esquema padrão para JavaScript, Java e .NET
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.