http://d.puremagic.com/issues/show_bug.cgi?id=5366
Summary: std.json parseJSON incorrectly parses unicode entities Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nob...@puremagic.com ReportedBy: ibuc...@ubuntu.com --- Comment #0 from Iain Buclaw <ibuc...@ubuntu.com> 2010-12-23 10:03:20 PST --- import std.json; import std.stdio; void main() { auto res = parseJSON(`"\u00F6"`); writefln("%s",res.str); // this should write "�" } Patch: --- d~/phobos/std/json.d +++ d/phobos/std/json.d @@ -156,7 +156,7 @@ foreach_reverse(i; 0 .. 4) { auto hex = toupper(getChar()); if(!isxdigit(hex)) error("Expecting hex character"); - val += (isdigit(hex) ? hex - '0' : hex - 'A') << (4 * i); + val += (isdigit(hex) ? hex - '0' : hex - '7') << (4 * i); } char[4] buf = void; str.put(toUTF8(buf, val)); Or (somewhat easier to under): --- d~/phobos2/std/json.d +++ d/phobos2/std/json.d @@ -156,7 +156,7 @@ foreach_reverse(i; 0 .. 4) { auto hex = toupper(getChar()); if(!isxdigit(hex)) error("Expecting hex character"); - val += (isdigit(hex) ? hex - '0' : hex - 'A') << (4 * i); + val += (isdigit(hex) ? hex - '0' : hex - 'A' + 10) << (4 * i); } char[4] buf = void; str.put(toUTF8(buf, val)); Regards -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------