Dukungan multibahasa dan emoji dalam fitur layanan Bahasa

Dukungan multibahasa dan emoji telah menghasilkan penyandian Unicode yang menggunakan lebih dari satu titik kode untuk mewakili satu karakter yang ditampilkan, yang disebut grafem. Misalnya, emoji seperti 🌷 dan 👍 dapat menggunakan beberapa karakter untuk menyusun bentuk dengan karakter tambahan untuk atribut visual, seperti warna kulit. Demikian pula, kata Hindi अनुच्छेद dikodekan sebagai lima huruf dan tiga tanda gabungan.

Karena kemungkinan panjang pengodean multibahasa dan emoji yang berbeda, fitur layanan Bahasa dapat mengembalikan offset dalam respons.

Offset dalam respons API

Setiap kali offset mengembalikan respons API, ingatlah:

  • Elemen dalam respons mungkin spesifik untuk titik akhir yang dipanggil.
  • Payload HTTP POST/GET dikodekan dalam UTF-8, yang mungkin atau mungkin bukan pengodean karakter default pada pengompilasi sisi klien atau sistem operasi Anda.
  • Offset mengacu pada jumlah grafem berdasarkan standar Unicode 8.0.0, bukan jumlah karakter.

Mengekstrak substring dari teks dengan offset

Offset dapat menyebabkan masalah saat menggunakan metode substring berbasis karakter, misalnya metode .NET substring(). Satu masalah adalah bahwa offset dapat menyebabkan metode substring berakhir di tengah pengodean grafem multi-karakter alih-alih di akhir.

Di .NET, pertimbangkan untuk menggunakan kelas StringInfo, yang memungkinkan Anda bekerja dengan untai sebagai rangkaian elemen tekstual, bukan objek karakter individual. Anda juga dapat mencari pustaka pemisah grafem di lingkungan perangkat lunak pilihan Anda.

Fitur layanan Bahasa mengembalikan elemen tekstual ini juga, untuk kenyamanan.

Titik akhir yang mengembalikan offset akan mendukung stringIndexType parameter. Parameter ini menyesuaikan atribut offset dan length dalam output API agar sesuai dengan skema perulangan string yang diminta. Saat ini, kami mendukung tiga jenis:

  • textElement_v8 (default): berulang pada grafem seperti yang didefinisikan oleh standar Unicode 8.0.0
  • unicodeCodePoint: mengulangi Titik Kode Unicode, skema default untuk Python 3
  • utf16CodeUnit: mengulangi lebih dari Unit Kode UTF-16, skema default untuk JavaScript, Java, dan .NET

Jika stringIndexType yang diminta cocok dengan lingkungan pemrograman pilihan, ekstraksi substring dapat dilakukan menggunakan metode substring atau irisan standar.

Lihat juga