1

アラビア語の文字列があり、encodeURIComponentを使用してエンコードし、エンコードされた文字列から長さを調べようとしますが、このコードが機能しないのはなぜですか?http://jsfiddle.net/mCwaj/

var str="قال على";
var encd=encodeURIComponent(str);
alert(encd);
alert(custom_length(encd));
function custom_length(str){
var tab=str.match(/%../g);
return tab.length;
}

結果は7になるはずですが、関数は13を返します。私が知っているのは、アラビア語でエンコードされたアルファベットは%(letter | number)(letter | number)のように構成されているということです。

4

2 に答える 2

1

の代わりに、エンコードされていないものをstr関数に渡しますencd。したがって、正規表現は一致せず、結果はそのプロパティnullへのアクセス時に例外をスローします。length

于 2013-03-16T18:49:29.060 に答える
0

「encodeURIComponent()」の代わりに「escape()」を使用してみてください

//14 charachters
var str="مرحبا أنا ياسر";  

var result=custom_length(escape(str));

alert(result); //it'll display 14

function custom_length(str){
   var tab=str.match(/%../g);
   return tab.length;
}

デモ:http://jsfiddle.net/ysinjab/KDyhp/

于 2013-03-16T19:03:54.580 に答える