如何计算编码字符串的长度?

所以我有一个阿拉伯字符串然后我使用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,我所知道的是阿拉伯语编码的字母表组成像%(字母|数字)(字母|数字)

您正在将非编码的str传递给您的函数而不是encd 。 因此,正则表达式不匹配 ,结果null在访问其length属性时抛出exception。

尝试使用“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/http://jsfiddle.net/ysinjab/KDyhp/

Interesting Posts