2

ユーザーの電子メールクライアントが事前に入力されたコンテンツ (javascript) で開く関数を作成しています。

問題は、特殊文字を変換して電子メールクライアントに正しく表示するのに問題があることです (コンテンツは URL によって渡されます)。

関数を作成しましたが、 a を実行した後、console.log()文字を変換することさえできないことがわかりました (おそらく acharを aに置き換えようとしているからですstring)。

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;
}

成功した方法を見つけた人や、これが意図したとおりに機能しない理由 (または修正) を知っている人はいますか?

編集:関数はand文字 (フランス語でよく使用される) をencodeURIサポートしていません。これらの結果はand になります。éèéè

4

1 に答える 1

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/

(注: IE8ではポリフィル が必要です.map()。)

例:

url_encode( 'ABCÀDEFè' ) // "ABC%C0DEF%E8"
于 2012-08-16T19:39:45.123 に答える