diff --git a/lib/execjs/external_runtime.rb b/lib/execjs/external_runtime.rb index 850fa4f..8a926ab 100644 --- a/lib/execjs/external_runtime.rb +++ b/lib/execjs/external_runtime.rb @@ -4,8 +4,10 @@ module ExecJS class ExternalRuntime class Context def initialize(runtime, source = "") + source = source.encode('UTF-8') if source.respond_to?(:encode) + @runtime = runtime - @source = source.respond_to?(:encode) ? source.encode("UTF-8") : source + @source = source end def eval(source, options = {}) diff --git a/lib/execjs/mustang_runtime.rb b/lib/execjs/mustang_runtime.rb index f6b8f86..31b3ce9 100644 --- a/lib/execjs/mustang_runtime.rb +++ b/lib/execjs/mustang_runtime.rb @@ -2,6 +2,8 @@ module ExecJS class MustangRuntime class Context def initialize(source = "") + source = source.encode('UTF-8') if source.respond_to?(:encode) + @v8_context = ::Mustang::Context.new @v8_context.eval(source) end diff --git a/lib/execjs/ruby_racer_runtime.rb b/lib/execjs/ruby_racer_runtime.rb index db5582e..d6136ff 100644 --- a/lib/execjs/ruby_racer_runtime.rb +++ b/lib/execjs/ruby_racer_runtime.rb @@ -2,6 +2,8 @@ module ExecJS class RubyRacerRuntime class Context def initialize(source = "") + source = source.encode('UTF-8') if source.respond_to?(:encode) + @v8_context = ::V8::Context.new @v8_context.eval(source) end diff --git a/lib/execjs/ruby_rhino_runtime.rb b/lib/execjs/ruby_rhino_runtime.rb index 0c5aa24..9f21371 100644 --- a/lib/execjs/ruby_rhino_runtime.rb +++ b/lib/execjs/ruby_rhino_runtime.rb @@ -2,6 +2,8 @@ module ExecJS class RubyRhinoRuntime class Context def initialize(source = "") + source = source.encode('UTF-8') if source.respond_to?(:encode) + @rhino_context = ::Rhino::Context.new @rhino_context.eval(source) end diff --git a/test/test_runtime.rb b/test/test_runtime.rb index fa4052c..c25cfe5 100644 --- a/test/test_runtime.rb +++ b/test/test_runtime.rb @@ -69,7 +69,7 @@ class TestRuntime < Test::Unit::TestCase assert_raise Encoding::UndefinedConversionError do binary = "\xde\xad\xbe\xef".force_encoding("BINARY") - @runtime.eval(binary) + context.eval(binary) end end end