Make MATLAB output in strict ASCII

MATLAB console output used high-ASCII sometimes, e.g. for its prompt ( » ). In R2025A it may output UTF8, e.g., for zpk() output:
z =
0×1 empty double column vector
p =
9.900494692205900e-01
k =
9.950657811787363e-03
This 'feature' is a nuisance when interchanging text with other programs. Is there a built-in function to convert these occasional UTF non-ASCII characters to a reasonable approximation in standard ASCII? ( like 'x' or '>>') ?
Or is this behavior to be considered a bug that will be fixed (there appear to be quite a few nuisance bugs in R2025a).
-marcel

3 Commenti

z = zeros(0,1)
z = 0×1 empty double column vector
The character used between the 0 and the 1 is the '×' character, U+00D7, decimal 215. This character only takes a single byte to represent in UTF-8. This character is present in most ISO-8896-* character sets, and most of the common Windows code pages (for example it is missing in Windows 1255 - Hebrew)
> z = zeros(0,1)
One recognizes an expert by his concise examples :-) I actually used it just now to verify the problem.
Matlab R2023b did not use the 'small x'. (I have gone back to R2023b as I encountered a host of [what I consider to be] breaking changes in R2025a).
I was wrong, by the way, in saying that 0xD7 required only one byte in UTF-8.

Accedi per commentare.

Risposte (1)

Walter Roberson
Walter Roberson il 3 Lug 2025

0 voti

Is there a built-in function to convert these occasional UTF non-ASCII characters to a reasonable approximation in standard ASCII? ( like 'x' or '>>') ?
No, there is no built-in function for that purpose.
Any such hypothetical built-in function would have to deal with the problem of contention about what the replacements should be. For example should × be replaced with x or with * or with by or with times ? The answer is likely to depend on context -- in some places × should be replaced by x but in some places it should be replaced by *

7 Commenti

MATLAB console output used high-ASCII sometimes, e.g. for its prompt ( » ).
I have never ever observed MATLAB using » for its >> prompt.
What system Language setting are you using?
marcel hendrix
marcel hendrix il 4 Lug 2025
Modificato: marcel hendrix il 4 Lug 2025
I see that prompt when I call MATLAB from C interactively using engOpen and engOutputBuffer and display the text in a standard Windows console (ASCII, obviously not the UTF16 variant).
I could of course translate the output in that call, but then it would be nice to have at least a documented list of what high-ASCII MATLAB is using (or a way to stop it altogether).
It sounds like Windows applies some kind of "smart quotes" transformation to its console. In which case this would depend mostly on your OS locale and language settings.
As an experiment, you should have the C program write the text to a file, and later examine the bytes of the file. This will allow you to distinguish between "output by the program" compared to "as displayed in Windows console"
marcel hendrix
marcel hendrix il 4 Lug 2025
Modificato: marcel hendrix il 4 Lug 2025
The prompt ( » ) is $C2 $BB, so MATLAB appears to emit UTF-16. I think I'll special case my engOutputBuffer parser for this sequence and for decimal 215.
Can you post a screenshot?
The prompt ( » ) is $C2 $BB, so MATLAB appears to emit UTF-16
That is UTF-8 rather than UTF-16

Accedi per commentare.

Categorie

Scopri di più su Argument Definitions in Centro assistenza e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by