語言服務功能中的多語系和表情圖示支援

多語系和表情圖示支援會導致 Unicode 編碼使用一個以上的字碼元素來代表單一顯示的字元 (稱為語素簇)。 例如,類似 🌷 的表情圖示,👍 可能會使用數個字元和視覺屬性的其他字元 (例如膚色) 來撰寫圖形。 同樣地,印地文文字 अनुच्छेद 會編碼為五個字母和三個組合符號。

由於可能的多語系和表情圖示編碼長度不同,因此語言服務功能可能會在回應中傳回位移。

API 回應中的位移

當 API 回應傳回位移時,請記住:

  • 回應中的元素可能特定於所呼叫的端點。
  • HTTP POST/GET 承載是以 UTF-8 編碼,而這不一定是用戶端編譯器或作業系統上的預設字元編碼。
  • 位移會根據 Unicode 8.0.0 標準 (而非字元計數) 參考語素簇計數。

從具有位移的文字中進行 substring 擷取

使用以字元為基礎的 substring 方法 (例如 .NET substring() 方法) 時,位移可能會造成問題。 其中一個問題是,位移可能會導致 substring 方法在多字元語素簇編碼的中間 (而非結尾) 結束。

在 .NET 中,請考慮使用 StringInfo 類別,此類別可讓您將字串作為一連串的文字元素,而不是個別的字元物件。 您也可以在慣用的軟體環境中尋找語素簇分隔器程式庫。

為了方便起見,語言服務功能也會傳回這些文字元素。

傳回位移的端點將支援 stringIndexType 參數。 此參數會調整 API 輸出中的 offsetlength 屬性,以符合要求的字串逐一查看配置。 目前,我們支援三種類型:

如果 stringIndexType 要求項目符合選擇的程式設計環境,則可以使用標準的 substring 或配量方法來進行 substring 擷取。

另請參閱