浏览代码

makes behavior for invalid utf8 sequences consistent regardless of ini settings

Johannes M. Schmitt 11 年之前
父节点
当前提交
ceea442504

+ 1 - 1
src/JMS/Serializer/JsonSerializationVisitor.php

@@ -26,7 +26,7 @@ class JsonSerializationVisitor extends GenericSerializationVisitor
 
     public function getResult()
     {
-        return json_encode($this->getRoot(), $this->options);
+        return @json_encode($this->getRoot(), $this->options);
     }
 
     public function getOptions()

+ 12 - 0
tests/JMS/Serializer/Tests/Serializer/JsonSerializationTest.php

@@ -175,6 +175,18 @@ class JsonSerializationTest extends BaseSerializationTest
         $this->assertEquals('{}', $this->serialize(new Author(null)));
     }
 
+    /**
+     * @group encoding
+     */
+    public function testSerializeWithNonUtf8EncodingHasConsistentBehavior()
+    {
+        ini_set('display_errors', 1);
+        $this->assertEquals('{"foo":"bar","bar":null}', $this->serialize(array('foo' => 'bar', 'bar' => pack("H*" ,'c32e'))));
+
+        ini_set('display_errors', 0);
+        $this->assertEquals('{"foo":"bar","bar":null}', $this->serialize(array('foo' => 'bar', 'bar' => pack("H*" ,'c32e'))));
+    }
+
     protected function getFormat()
     {
         return 'json';