Since the blog doesn't seem to let me comment any more, I'll add my comment here.
It's about this post: http://blog.xojo.com/2017/02/17/do-you-still-ascii/
I think it's confusing and misguiding, in parts.
First off, a few clarifications are needed:
1. Any literal string is automatically getting the "UTF-8" encoding. That part is important to keep in mind.
2. If strings are concatenated, Xojo (or the unterlying system functions) attempts to turn both into the same encoding before adding them up. So, if someone concats a string with ASCII encoding with a string with UTF-8 encoding, both will be converted to UTF8 first, then added up. The only problem are strings without an encoding (i.e. their Encoding property is nil), as that will lead to both parts and thus the concatenated result losing their encoding. Also, one need to consider what happens if one concats a UTF-8 with a UTF-16 encoded string. The result may be UTF-8 or UTF-16. Which one is not defined by Xojo, I believe, so if you later want to pass the string on to something outside of Xojo's code, e.g. write it to a file, you better use "s.ConvertEncoding(Encodings.UTF8)" on it to make sure it's in UTF8 encoding.
3. ASCII is special: ASCII is only defining the first 128 char codes, and by definition the first 128 codes of UTF8 are identical to ASCII's code.
4. The implicit Chr() function generates UTF8 strings, based on Unicode code points.
What we can take from this:
1. Using chr(34) + "sometext" + chr(34) is no issue at all. There is no encoding ambiguity.
2. Using any codes < 128 with the Chr() function is also safe. When using codes > 128 with Chr(), then the advice in the blog post is sound.
3. The real danger you have to be aware of is getting strings from any "external input", such as from the network or from a file, where received strings often have NO encoding set, and concatenating those with other strings will make them lose their encoding as well, leading to problems when trying to display the results. For instance, I had received japanese text (which was utf8-encoded) from a HTTPSocket and tried to show that with a MessageDialog. That failed (I was seeing only "garbage") until I explicitly set the encoding of the string to UTF8.