user2177691
user2177691

Reputation:

How to calculate the length of an encoded string?

so i have an arabic string then i encode it using encodeURIComponent, then i try to know the length from the encoded string but this code don't work why? 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;
}

the result should be 7 but function returns 13, what i know is that an arabic encoded alphabet is composed like %(letter|number)(letter|number)

Upvotes: 1

Views: 244

Answers (2)

Yasser Sinjab
Yasser Sinjab

Reputation: 598

try using "escape()" instead of "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;
}

Demo:http://jsfiddle.net/ysinjab/KDyhp/

Upvotes: 0

Bergi
Bergi

Reputation: 665546

You are passing the non-encoded str to your function instead of encd. Therefore, the regex does not match and the result null throws an exception on accessing its length property.

Upvotes: 1

Related Questions