Obsługa wielojęzycznych i emoji w funkcjach usługi językowej

Obsługa wielojęzycznych i emoji doprowadziła do kodowania Unicode, które używają więcej niż jednego punktu kodu do reprezentowania pojedynczego wyświetlanego znaku, nazywanego grafu. Na przykład emoji, takie jak 🌷 i 👍 mogą używać kilku znaków, aby utworzyć kształt z dodatkowymi znakami dla atrybutów wizualnych, takich jak kolor skóry. Podobnie słowo अनुच्छेद hindi jest kodowane jako pięć liter i trzy znaki łączące.

Ze względu na różne długości możliwych kodowań wielojęzycznych i emoji funkcje usługi językowej mogą zwracać przesunięcia w odpowiedzi.

Przesunięcia w odpowiedzi interfejsu API

Za każdym razem, gdy są zwracane przesunięcia odpowiedzi interfejsu API, pamiętaj:

  • Elementy w odpowiedzi mogą być specyficzne dla punktu końcowego, który został wywołany.
  • Ładunki HTTP POST/GET są kodowane w formacie UTF-8, co może lub nie jest domyślnym kodowaniem znaków w kompilatorze lub systemie operacyjnym po stronie klienta.
  • Przesunięcia odnoszą się do liczb grafu na podstawie standardu Unicode 8.0.0 , a nie liczby znaków.

Wyodrębnianie podciągów z tekstu z przesunięciami

Przesunięcia mogą powodować problemy podczas używania metod podciągów opartych na znakach, na przykład metody substring() platformy .NET. Jednym z problemów jest to, że przesunięcie może spowodować zakończenie metody podciągnięcia w środku kodowania grafu wieloznakowego zamiast końca.

Na platformie .NET rozważ użycie klasy StringInfo , która umożliwia pracę z ciągiem jako serią elementów tekstowych, a nie pojedynczych obiektów znaków. Możesz również wyszukać biblioteki podziału grafu w preferowanym środowisku oprogramowania.

Funkcje usługi językowej zwracają te elementy tekstowe, a także dla wygody.

Punkty końcowe zwracające przesunięcie będą obsługiwać stringIndexType parametr . Ten parametr dostosowuje offset atrybuty i length w danych wyjściowych interfejsu API w celu dopasowania do żądanego schematu iteracji ciągu. Obecnie obsługujemy trzy typy:

  • textElement_v8(wartość domyślna): iteruje grafy zgodnie z definicją standardu Unicode 8.0.0
  • unicodeCodePoint: iteruje punkty kodu Unicode, schemat domyślny dla języka Python 3
  • utf16CodeUnit: iteruje ponad jednostki kodu UTF-16, schemat domyślny dla języków JavaScript, Java i .NET

stringIndexType Jeśli żądany element pasuje do wybranego środowiska programowania, wyodrębnianie podciągów można wykonać przy użyciu standardowych metod podciągów lub wycinków.

Zobacz też