2012-08-16 36 views
2

我正在製作一個函數,用戶的電子郵件客戶端只需打開一個預先填充的內容(javascript)。使用網址編碼轉換特殊字符(éèë)

問題是,我無法轉換特殊字符,以便它們正確顯示到電子郵件客戶端(通過url傳遞的內容)。

我已經寫了一個函數,但在做了console.log()之後,我發現它甚至不會轉換字符(可能是因爲我試圖用string替換char)。

function url_encode(item) 
{ 
    for (i in item) 
    { 
     a = item[i] 
     switch (a) 
     { 
      case "À": a='%C0'; 
      break; 
      case "È": a='%C8'; 
      break; 
      case "É": a='%C9'; 
      break; 
      case "Ê": a='%CA'; 
      break; 
      case "à": a='%E0'; 
      break; 
      case "è": a='%E8'; 
      break; 
      case "é": a='%E9'; 
      break; 
      case "ê": a='%EA'; 
      break; 
      case "ë": a='%EB'; 
      break; 
     } 
     item[i] = a; 
     console.log(item[i]) 
    } 
    return item; 
} 

任何人都找到了成功的方法或有一個想法(或修復)爲什麼這不按預期工作?

編輯:encodeURI功能不支持éè字符(這是在法國用了很多),這些結果爲éè

+4

JavaScript有一個內置的'是encodeURI '函數... – 2012-08-16 19:00:25

+0

您在遍歷數據時正在修改數據。嘗試複製數組,遍歷該數組,然後更改'input'的各個值。 – 2012-08-16 19:01:54

+2

@ŠimeVidasJavaScript的'encodeURI'函數不支持'é'和''字符。 – 2012-08-16 19:09:37

回答

6

可以嗎?

var url_encode = function (url) { 
    return url.split('').map(function (c) { 
     return /[ÀÈÉÊàèéêë]/.test(c) ? '%' + c.charCodeAt(0).toString(16).toUpperCase() : c; 
    }).join(''); 
}; 

現場演示:http://jsfiddle.net/v2He6/

(注意:您將需要polyfill.map()爲IE8)。

例子:

url_encode('ABCÀDEFè') // "ABC%C0DEF%E8" 
+0

+ 50億分的答案和IE通知。非常感謝你! – 2012-08-16 19:45:56