agnoster / base32-js

Base32 encoding for JavaScript, based (loosely) on Crockford's Base32
https://github.com/agnoster/base32-js
MIT License
121 stars 61 forks source link

Base32.decode() doesn't work on international alphabet #20

Open alexreyes opened 7 years ago

alexreyes commented 7 years ago

This works fine for some strings, but for examples like these I get invalid results:

base32.encode("юзер@екзампл.ком.example.com");

output:

9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqp

input:

base32.decode(9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqpu");

results in:

N7ªµÏ\Õ@@5;ªµÏ\×3Uk¹¼?;.;Uk¹¾<.example.com

As you can see, it does not result in the original string when it is decoded. Not sure why.

agnoster commented 7 years ago

Yeah, this issue has come up before - it doesn't handle non-ascii data well, which is totally a shortcoming. I just haven't really updated this package in forever - I kind of made it as a proof-of-concept and haven't touched it in a long time. I'm happy to accept a PR to fix this though.

ignoramous commented 4 years ago

Yeah, this issue has come up before - it doesn't handle non-ascii data well, which is totally a shortcoming.

Can you please add that as a disclaimer in the readme and the npm page? Not being able to handle non-ascii data is important since primary use case for such encoding is precisely so that the Unicode characters can be made digestible by various data-structures and clients.

alexreyes commented 4 years ago

Okay, I think you're right about that @ignoramous. I made a PR to include this in the readme (I'm not the maintainer of this project)