Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Obsługa wielojęzyczności i emoji doprowadziła do zakodowań Unicode, które wykorzystują więcej niż jeden punkt kodu, aby reprezentować pojedynczy wyświetlany znak zwany grafemem. Na przykład emoji, takie jak 🌷 i 👍 mogą używać kilku znaków do tworzenia kształtu z dodatkowymi znakami dla atrybutów wizualnych, takich jak odcienie 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 językowe usług mogą zwracać offsety w odpowiedzi.
Przesunięcia w odpowiedzi interfejsu API
Gdy tylko przesunięcia są zwracane w odpowiedzi interfejsu API, pamiętaj:
- Elementy w odpowiedzi mogą być specyficzne dla wywoływanego punktu końcowego.
- Ładunki HTTP POST/GET są kodowane w formacie UTF-8, co może być lub nie jest domyślnym kodowaniem znaków w kompilatorze po stronie klienta lub systemie operacyjnym.
- Przesunięcia odnoszą się do liczby grafemów na podstawie standardu Unicode 8.0.0, a nie do liczby znaków.
Wyodrębnianie podciągów z tekstu z przesunięciami
Przesunięcia mogą powodować problemy podczas korzystania z metod podciągów opartych na znakach, na przykład metody .NET substring(). Jednym z problemów jest to, że przesunięcie może spowodować zakończenie metody podciągu w środku kodowania grafeemu wieloznakowego zamiast na końcu.
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 rozdzielacze grafemów w preferowanym środowisku programistycznym.
Funkcje usługi językowej również zwracają te elementy tekstowe dla wygody.
Punkty końcowe, które zwracają przesunięcie, będą obsługiwać parametr stringIndexType
. Ten parametr dostosowuje atrybuty offset
i length
w danych wyjściowych interfejsu API, aby dopasować je do żądanego schematu iteracji ciągów. Obecnie obsługujemy trzy typy:
-
textElement_v8
(wartość domyślna): iteruje po grafemach zgodnie z wersją 8.0.0 standardu Unicode -
unicodeCodePoint
: iteruje po punktach kodowych Unicode, domyślny schemat dla języka Python 3 -
utf16CodeUnit
: iteruje po jednostkach kodowania UTF-16, schemat domyślny dla JavaScript, Java i .NET
Jeśli stringIndexType
pasuje do wybranego środowiska programistycznego, wyodrębnianie podciągów można wykonać przy użyciu standardowych metod substring lub slice.