Skip to content

Encoding is mangled in error message for syntax error #369

@JasonBarnabe

Description

@JasonBarnabe

Given some invalid JS with some non-English (but valid encoding-wise) characters:

js = 'var test = "в себе "шок-контент", на'
=> "var test = \"в себе \"шок-контент\", на"
js.encoding
=> #<Encoding:UTF-8>
js.valid_encoding?
=> true

mini_racer will raise MiniRacer::ParseError (good), but the error message will have its encoding mangled.

begin
  MiniRacer::Context.new(timeout: 500, max_memory: 20_000_000).eval(js)
rescue MiniRacer::ParseError => e
  msg = e.message
end
=> "Uncaught SyntaxError: Unexpected identifier '\xD1\x88\xD0\xBE\xD0\xBA' at <eval>:1:20"
msg.encoding
=> #<Encoding:BINARY (ASCII-8BIT)>
msg.valid_encoding?
=> true
puts msg
(app):16:in 'IO#write': "\xD1" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
        from (app):16:in 'IO#puts'
        from (app):16:in 'Kernel#puts'
        from (app):16:in '<main>'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions