序列化时非法字符转义异常
Closed this issue · 1 comments
HWZen commented
如下代码可以正常序列化:
#include "configor/json.hpp"
#include <string>
#include <iostream>
using namespace configor;
int main() try
{
std::string str("\x07Hello world");
json::value v{str};
std::cout << json::dump(v) << std::endl; // OK, print "\u07Hello world"
}
catch(std::exception& e){
std::cerr << "catch exception: " << e.what() << std::endl;
}
但如果 \x07
变成 \xff
就会抛出异常:
#include "configor/json.hpp"
#include <string>
#include <iostream>
using namespace configor;
int main() try
{
std::string str("\xffHello world");
json::value v{str};
std::cout << json::dump(v) << std::endl; // throw exception
}
catch(std::exception& e){
std::cerr << "catch exception: " << e.what() << std::endl; // catch exception: value serialization error: unexpected character '\u8792BAEF'
}
Nomango commented
理论上 \x07
和 \xff
都不是合法的 json 字符,\x07
在 C++ 中其实是 char(7)
,这个字符不在 json 的合法字符序列中,它应该和 \xff
一样抛出异常。
我在这里确认json的语法规则 https://www.json.org ,其中有效字符从 0x20 开始