I've not tried in this specific combination but potentially wrapping the field in %External(Field) might give you the correct result.

could consider  $Translate(Var,",","^") but I've not used it in the context in your example though

You can potentially use a $ListToString(.. or LIST(... or some other similar option in Sql to extract the values as part of the query and avoid the special characters. 

It gives you a greater degree of control compared to some languages. I'm not aware that many other languages have a sort thats particularly more sophisticated in reality its probably doing the same just 'under the covers' as theyre higher level than objectscript. The alternative is to pass the data out to whatever front end you're using and have it sort prior to displaying but then most likely its the client doing that work rather than your server. 

We've previously passed the data into new indices to utilise the auto sorting nature of the objectscript arrays, using a number based or alphabetical index depending on how we're hoping to organise the data.

eg. s NewData(Data(Key,"Name")) = Data(Key)

With object classes or mapped globals we tend to use the sql queries to sort the data as required lately. 

There are the json and dynamic arrays that can be used for collection / array data storage.

We use both depending on the situation. VS Code is more modern and certainly better for Git and Merge tools than Studio but it doesn't have all the abilities of Studio that I've found, global storage properties etc. We've found VS Code doesn't handle physical files as well as Studio at least for InterSystems so its unfriendly when using CSPs that are version controlled. 

At present, each namespace is an entirely separate self contained system. We'd like each to better represent being like the live setup so that apps in development and testing environments behave how they would when going live if you see what I mean. Maybe a scaled down test would be the best approach to see if it has any major problems.