Open
Description
The javascript version (1.5.0 from npm) handles unicode characters in the input string:
> lz=require('lz-string')
> lz.compressToBase64('ö')
'G9A='
> lz.decompressFromBase64(lz.compressToBase64('ö'))
'ö'
> lz.decompressFromBase64(lz.compressToBase64('\u2764'))
'❤'
> lz.decompressFromBase64(lz.compressToBase64('\u{1f3b6}'))
'🎶'
Doing the same in the ruby version (0.2.0) fails:
[10] pry(main)> LZString::Base64.decompress LZString::Base64.compress "ö"
=> "\xF6"
[11] pry(main)> LZString::Base64.decompress LZString::Base64.compress "\u2764"
=> nil
LZString::Base64.decompress LZString::Base64.compress "\u{1f3b6}"
=> nil
In addition, for the last emoji, compress returns different values (jwbjb9o=
from javascript, m3PQ
from ruby). Seems like the ruby version expects latin1 on input, fails miserably on characters outside of it, and returns a string with wrong encoding (Binary instead of ISO8859_1)
Metadata
Metadata
Assignees
Labels
No labels