所以我有一个阿拉伯字符串然后我用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,我所知道的是阿拉伯语编码的字母组成如%(字母|数字)(字母|数字)
答案 0 :(得分:1)
您正在将未编码的str
传递给您的函数,而不是encd
。因此,正则表达式不match,结果null
在访问其length
属性时抛出异常。
答案 1 :(得分:0)
尝试使用“escape()”而不是“encodeURIComponent()”
//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/