Translating escape sequence

Phil Davis revdev at pdslabs.net
Wed Mar 15 00:58:48 EDT 2017


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 at 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





More information about the use-livecode mailing list