diff --git a/parson.c b/parson.c index 38617e6..6e01a87 100644 --- a/parson.c +++ b/parson.c @@ -331,8 +331,7 @@ static const char * get_processed_string(const char **string) { return NULL; break; } - } else if (iscntrl((unsigned char)current_char) && - ((unsigned char)current_char != 0x7F)) { /* no control characters allowed (except DEL)*/ + } else if ((unsigned char)current_char < 0x20) { /* 0x00-0x19 are invalid characters for json string (http://www.ietf.org/rfc/rfc4627.txt) */ parson_free(output); return NULL; } diff --git a/tests.c b/tests.c index 10ec111..2046ec2 100644 --- a/tests.c +++ b/tests.c @@ -77,6 +77,7 @@ void test_suite_2(void) { object = json_value_get_object(root_value); TEST(STREQ(json_object_get_string(object, "string"), "lorem ipsum")); TEST(STREQ(json_object_get_string(object, "utf string"), "lorem ipsum")); + TEST(STREQ(json_object_get_string(object, "utf-8 string"), "あいうえお")); TEST(json_object_get_number(object, "positive one") == 1.0); TEST(json_object_get_number(object, "negative one") == -1.0); TEST(json_object_get_number(object, "hard to parse number") == -0.000314); diff --git a/tests/test_2.txt b/tests/test_2.txt index 501fead..279d477 100644 --- a/tests/test_2.txt +++ b/tests/test_2.txt @@ -1,6 +1,7 @@ { "string" : "lorem ipsum", "utf string" : "\u006corem\u0020ipsum", + "utf-8 string": "あいうえお", "positive one" : 1, "negative one" : -1, "pi" : 3.14,