簡體   English   中英

JavaScript無法識別土耳其語字符

[英]JavaScript doesn't recognize Turkish characters

我有這個代碼:

if (term.length > 0) {
  var inputVal = $("#input").val();
  if (inputVal.indexOf("jason") !== -1) {
    results = $.ui.autocomplete.filter(table, term);
  }
}

這可行。 但是,當我將"jason"更改為"jasön""jasün"或其他土耳其語字符時,它不起作用。 是因為js文件的編碼嗎? 我將編碼更改為Unicode(帶有簽名的utf-8)-代碼頁65001,然后是土耳其語ISO 28599,但它不起作用。 你能告訴我該怎么辦嗎? 謝謝。

它可以識別土耳其語字符,但是您正在對所述字符串進行相等性檢查。 您需要了解的是,即使ö只是一個帶有重音符號的o ,它仍然是一個不同的字符,因此即使您沒有進行三重相等性檢查,您的條件也是虛假的。

'ö' == 'o'  // false
'ö' === 'o' // false

相反,您應該做的是將輸入值轉換為不帶重音符號的字符串,因為這顯然是您所期望的。 這個問題正是您要尋找的,我想說的是,如果您可以使用ES6功能,那么它將是最好的答案,因為它非常干凈且易於使用

function convert (str) {
  return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '')
}

if (term.length > 0) {
  var inputVal = convert($('#input').val())
  if (inputVal.indexOf('jason') !== -1) {
    results = $.ui.autocomplete.filter(table, term)
  }
}

否則,如果不能選擇ES6, 則最好的答案應該是使用就好,只需創建一個函數util,即可在需要的任何地方重用。

關於文件的編碼,如果要處理土耳其語確實具有的特殊字符,則應使用utf-8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM