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