-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Current Behavior
Retrieving special characters causes JSON error
Retrieving a solution from the knowledge base (manually created ontologies) that includes a two-byte special character like the german umlaut "ä" via PrologClient.cpp causes PrologBindings.cpp to throw the following error:
JSON data must be UTF-8 encoded
Cause
In PrologEngine.cpp line 95 PL_atom_chars(atom) returns the solution of the query result encoded in UTF-16 format: e.g. ä = 0x00E4.
This solution is then parsed in PrologQuery.cpp line 89 by PrologBindings::parseJSONBindings(resp.solution) which expects resp.solution to be UTF-8 encoded: e.g. ä = 0xC3 0xA4 and thus throws the JSON Error.
Storing special characters
The missing conversion between UTF-16 and UTF-8 also concerns the storage of special characters into the knowledge base. Instead of an "ä", the corresponding UTF-8 encoded characters "ä" are stored in the ontologies.
Maybe there is a different Prolog predicate instead of PL_atom_chars() that fixes this encoding problem or it could be resolved by adding a encoding conversion function to PrologEngine::run()?