JSON-94: fix a bug in encode_utf() for Non-BMP characters. *sigh*

JSON-93
Roker 5 years ago
parent a369e22504
commit 7c4643e143

@ -48,17 +48,26 @@ namespace json_spirit {
return std::string( 1, char(u) );
}else if( u<= 0x7FF )
{
char buf[2] = { char( 0xC0 + (u>>6) ), char( 0x80 + (u & 63) ) };
char buf[2] = { char( 0xC0 + (u>>6) ),
char( 0x80 + (u & 63) )
};
return std::string( buf, buf+2 );
}else if( u<= 0xFFFF )
{
char buf[3] = { char( 0xE0 + (u>>12) ), char( 0x80 + ((u>>6) & 63) ), char( 0x80 + (u & 63) ) };
char buf[3] = { char( 0xE0 + ( u>>12 ) ),
char( 0x80 + ((u>>6) & 63) ),
char( 0x80 + ( u & 63) )
};
return std::string( buf, buf+3 );
}else if( u<= 0x10FFFF )
{
char buf[4] = { char( 0xF0 + (u>>18) ), char( 0x80 + ((u>>12) & 63) ), char( 0x80 + ((u>>6) & 63) ), char( 0x80 + (u & 63) ) };
return std::string( buf, buf+3 );
char buf[4] = { char( 0xF0 + ( u>>18 ) ),
char( 0x80 + ((u>>12) & 63) ),
char( 0x80 + ((u>> 6) & 63) ),
char( 0x80 + ( u & 63) )
};
return std::string( buf, buf+4 );
}
throw std::runtime_error( "Unicode codepoint " + std::to_string(u) + " is too big!");

Loading…
Cancel
Save