2012-06-18 94 views
2

我在我的網站上有一個搜索框,我需要將用戶輸入的所有西班牙字符替換爲等效的英文字母。我編碼如下所示。當我將其插入到我的項目中,甚至創建一個編碼相同的簡單HTML頁面時,此功能無效。我的頁面正在使用<meta charset="utf-8" />。這工作正常,當我創建一個小提琴http://jsfiddle.net/KJAy3/。這就是它在調試器中的顯示方式enter image description here重音字符的問題

我在做什麼錯?我應該給我們什麼樣的編碼?此替換方法在表單提交之前觸發。

function encodeSearch(term){ 

term=term.replace("á","a"); 
term=term.replace("Á","A"); 
term=term.replace("é","e"); 
term=term.replace("É","E"); 
term=term.replace("í","i"); 
term=term.replace("Í","I"); 
term=term.replace("ó","o"); 
term=term.replace("Ó","O"); 
term=term.replace("ú","u"); 
term=term.replace("Ú","U"); 
term=term.replace("ñ","n"); 
term=term.replace("Ñ","N"); 
return term; 

}

+3

確保包含此代碼的文件保存爲utf-8編碼 – Esailija

+0

源文件的編碼本身也很重要。你是否保存爲ascii,偶然? – Sorpigal

+0

你還記得保存'encodeSearch()'的結果嗎? – SomeKittens

回答

7

您用過<script type="application/javascript" charset="utf-8" src="yourfile.js"></script>"? (假設你的文件保存爲UTF-8,當然)。

0

如果你要使用HTML的特殊字符,它可能是一個主意,用這個字符串replace方法對所有特殊字符:

[somestring].replace(/[\u0080-\u024F]/g, 
         function(a) { 
         return '&#'+a.charCodeAt(0)+';'; 
         }); 

它會將所有特殊字符轉換爲數字html實體,並防止需要在JavaScript中輸入所有這些字符,例如

'ñíóúü¡¿'.replace(.replace(/[\u0080-\u024F]/g, 
         function(a) { 
         return '&#'+a.charCodeAt(0)+';'; 
         }); 
    //=> result 
    // &#241;&#237;&#243;&#250;&#252;&#161;&#191;