ninjatronic / angular-base64

Base64 conversion for AngularJS
Other
185 stars 113 forks source link

Invalid encoding of ö char #15

Open Koziolek opened 9 years ago

Koziolek commented 9 years ago

My code is simple:

$base64.encode($scope.loginText)

Now if I put ö as loginText then I get 9g== that is invalid. As a reference, and valid, encoding I use java:

import java.util.Base64;
//...
byte[] encode = Base64.getEncoder().encode("ö".getBytes());
System.out.println(new String(encode));

produces 'w7Y=

and python

>>> import base64
>>> base64.b64encode("ö")
'w7Y=

Similar issue for other chars from german language, some from spanish and polish.

frazzaglia commented 7 years ago

Same issue with some characters from alphabet turkish and polish (ex: "Müşteri").

frazzaglia commented 7 years ago

@Koziolek I can encode correctly your "ö". When I encode, I obtain "9g==". My problem is related to "getByte" function in angular-base64.js file because function charCodeAt() return a value greater than 255 and an exception is thrown. If I comment "if" the character is not encoded correctly.

 var x = s.charCodeAt(i);
  if (x > 255) {
      throw "INVALID_CHARACTER_ERR: DOM Exception 5";
}