Skip to content

Doesn't handle unicode characters #3

Open
@u3shit

Description

@u3shit

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions