Not sure if it’s related but I had issues recently with processing JSON on Mac 
with PHP and attempts to force encoding/decoding of the JSON didn’t work. 

It was an encoding issue caused by the JSON strings being served into HTML 
pages that lacked an explicit UTF-8 tag. Adding '<meta charset="utf-8”>’ inside 
the html5 doc head tag fixed it.

YMMV

Good luck.
Keith

> On 26 Aug 2021, at 15:20, David Bovill via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> An update on my flailing attempts to get a robust way to go Fromm arrays to 
> json and back. Essentially the story is stuff that works on OSX fails now and 
> then on the server - and I’m trying to track down why?
> 
> It’s an intermittent problem and hard to pinpoint as the json files have a 
> lot of content -so finding a character that is causing the problem is not 
> easy. My assumption is that this is an encoding issue - but attempts at using 
> textDecode() are not helping.
> 
> I found one instance that was causing the array encoding to fail:
>> quote_type
>> put textDecode (utf8JSON, "UTF-8") into rJSON
>> replace "\u00a0” with empty in rJSON
> 
> While this is fixing the cases I have so far - I am not sure what the 
> underlying encoding issue is here. Its a unicode non-breaking-space - 
> https://www.fileformat.info/info/unicode/char/00a0/index.htm but I’m not sure 
> about the encoding and whether its valid utf8?
> 
> Bit stuck any thoughts?
> 
> 📆    Schedule a call with me
> On 15 Aug 2021, 11:46 +0100, David Bovill <david.bov...@gmail.com>, wrote:
>> I’ve been historically a bit lazy in taking care of how I store json data - 
>> so mostly it works but some times I get a different result on the server 
>> than I do locally on OSX. I suspect this is due to encoding differences in 
>> how the data is stored and which characters are in the json. I’d like to 
>> standardise on utf8 encoded json as my text storage of choice, and use a 
>> standard way to store this while in Livecode I parse the json and just deal 
>> with arrays.
>> 
>> As I understand it I should really be using textEncode and textDecode() - 
>> and I should store the utf8 encoded json files using “binfile:” not “file:” 
>> - however this is not what the dictionary entry fo textEncode() illustrates:
>>> quote_type
>>> put textEncode(field "output","UTF-8") into tOutput
>>> put tOutput into url ("file:output.txt")
>> 
>> So if I want to implement best practice in storing utf8 encoded json locally 
>> on Mac, on mobile and on unix servers according to:
>>> quote_type
>>> The textEncode function takes text, and returns it as binary data, encoded 
>>> with the specified encoding.
>>> It is highly recommended that any time you interface with things outside 
>>> LiveCode (files, network sockets, processes, etc) that you explicitly 
>>> textEncode any text you send outside LiveCode and textDecode all text 
>>> received into LiveCode. If this doesnt happen, a platform-dependent 
>>> encoding will be used (which normally does not support Unicode text).
>> 
>> How should I do that? Should I not do something like this (in pseudocode):
>>> quote_type
>>> function fetchFromUrl jsonURL
>>>   put url someURL into utf8JSON
>>>   put textDecode(jsonURL, "UTF-8") into encodedJSON
>>>   put json_ToArray (encodedJSON) into someArray
>>>   return someArray
>>> end fetchFromUrl
>>> 
>>> command exportToUrl someArray, jsonURL
>>>   put json_FromArray (someArray) into encodedJSON
>>>   put textEncode(encodedJSON, "UTF-8") into decodedJSON
>>>   put decodedJSON into url someURL
>>> end exportToUrl
>> 
>> And. If so - should I be using “binfile:” or “file:” for writing to the file 
>> system?
>> 
>> 📆    Schedule a call with me
> _______________________________________________
> 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


_______________________________________________
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