Maybe right after you import the JSON data, preprocess it with something like this:

set the lineDelimiter to "\u"
repeat for each line tLine in tJsonData
put numToCodePoint("0x" & char 1 to 4 of tLine) & char 5 to -1 of tLine after tNewData
end repeat
put tNewData into tJsonData

Then go on your merry way. Would that work?

Phil Davis



On 3/14/17 9:28 PM, J. Landman Gay via use-livecode wrote:
Thanks. I actually was using jsonImport() with these strings successfully (no wrapper required) but it has a bug on Android that makes it unuseable. That's what caused the problem in the first place, because jsonToArray() doesn't deal with escape sequences.

So I went ahead and wrote a decoder for escaped sequences that works, but found out I still can't use it. If I replace the escapes before using jsonToArray(), jsonToArray throws an error; it can't deal with the UTF16 strings. And I can't run my decoder through the keys of the converted array after jsonToArray is finished, because they are already munged into garbage characters by then.

So I'm stuck, I don't see any way to deal with these. I'll put in a bug report about jsonImport() but it will probably be a while before it gets fixed.

I hope someone else has an idea.

On 3/14/17 7:13 PM, Jim Lambert via use-livecode wrote:

Jacque wrote:

I'm dealing with non-English languages, and JSON data retrieved from a
database comes in with unicode escape sequences like this: Eduardo
Ba\u00f1uls.

I need to translate those. I can do it by replacing the "\u" with "0x"
and then using numToCodepoint() to get the UTF16 character. But there
could be many of these in the same string, so I'm looking for a one-shot
command that might just do them all.


JSONImport does it.
If the escaped string is not in JSON format this function will wrap it in JSON then let JSONImport do its thing.

put deEscape("Eduardo Ba\u00f1uls")

function deEscape pEscapedText
    put "{'1':'**dummy**'}" into temp
    replace "**dummy**" with pEscapedText in temp
    replace "'" with quote in temp
    put JSONImport(temp)into pArray
    return pArray[1]
end deEscape

Roundabout but does the trick.

Jim Lambert
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode




--
Phil Davis


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to