IcedDante
IcedDante

Reputation: 6842

Jackson JSON Handling of Unicode symbols

I'm calling a webservice that returns text including the ascii symbols representing the ® symbol. For example:

ACME Corp® Services

I use spring to return this textual data directly as a JSON object, and by the time it gets into the browser the json data remains correct:

"service": "ACME Corp® Services"

But upon being rendered via a Handlebars template and written into the page I get:

ACME Corp® Services

Do I need to sanitize the JSON data before using it? If so, what are the best practices for doing that? Otherwise, perhaps there is a change I should make on the back-end but I am not sure what that would be.

Upvotes: 2

Views: 3733

Answers (1)

StaxMan
StaxMan

Reputation: 116630

You do not need to sanitize content, but you must make sure it uses valid encoding allowed by JSON specification: typically UTF-8 (alternatives being UTF-16 and UTF-32).

If content is not encoded as UTF-8 but something else (like ISO-8859-1 aka "Latin-1"), you will need to construct Reader to decode it properly:

Reader r = new InputStreamReader(in, StandardCharset.ISO_8859_1);
MyPOJO pojo = mapper.readValue(r, MyPOJO.class);

Problem you seem to be having is that encoding used is incorrect.

Upvotes: 4

Related Questions