diff --git a/Library/Homebrew/vendor/okjson.rb b/Library/Homebrew/vendor/okjson.rb
index f4a4d215acb2fa58dfaca4301068bd5d905e6b8b..bbec99e8da1dafe35e4570187e44acf3628c9005 100644
--- a/Library/Homebrew/vendor/okjson.rb
+++ b/Library/Homebrew/vendor/okjson.rb
@@ -29,7 +29,7 @@ require 'stringio'
 # http://golang.org/src/pkg/utf8/utf8.go
 module Vendor
   module OkJson
-    Upstream = '42'
+    Upstream = '43'
     extend self
 
 
@@ -462,11 +462,16 @@ module Vendor
           # In ruby >= 1.9, s[r] is a codepoint, not a byte.
           if rubydoesenc?
             begin
-              c.ord # will raise an error if c is invalid UTF-8
+              # c.ord will raise an error if c is invalid UTF-8
+              if c.ord < Spc.ord
+                c = "\\u%04x" % [c.ord]
+              end
               t.write(c)
             rescue
               t.write(Ustrerr)
             end
+          elsif c < Spc
+            t.write("\\u%04x" % c)
           elsif Spc <= c && c <= ?~
             t.putc(c)
           else