ASCII is a 7 bit code, 0 to 127, so any code from 128 upwards is not ASCII.
The first major generalization of ASCII was a series of codes known as ISO 8859-1 through 8859-16. 8 bit tables that claim to be ASCII are usually referring to ISO 8859-1. Code-point 228 is ä in -1 thru -4, and -9 thru -10, and -13 thru -16, with the position being occupied by a variety of other characters such as Δ in the other ISO 8859 character sets.
I happen to have MS Word running on my OS-X system, and I do see that if I ask to insert symbol and switch character sets in the resulting drop-down menu to "(normal text)", that "per mille" occurs in a position numbered 228 by MS Word. As best I can tell, the only thing that 228 references is the position number in the Mac Times Roman font from before Apple switched to Unicode. The 228 is not used for per mille anywhere else that I could dig up (though apparently Windows Code Page 10000 is a reference to this encoding.)
What you should do is use the Unicode position numbers, and adjust the MS Windows machine to use an international standard. This might require setting it to use code page 1200 or 1201 (65001 would probably not be correct I think)
Unfortunately, MATLAB cannot handle code points from 65536 and upwards, only 16 bit code points.
The above discussion applies only to char() and to any HTML entity numbers you use, and does not apply to any TeX or LaTex coded strings. TeX and LaTex were designed before Unicode, and although there is an available LaTex library that adds Unicode code points to full LaTeX implementations, as best I can tell the MATLAB LaTeX implementation is missing enough operations to not be able to import the library. (And I worry that if you did manage to find a way to import it, you would have to import it in each string you wanted to use it with.)