在 Matlab 中打印非 ASCII / 符号字符

Posted

技术标签:

【中文标题】在 Matlab 中打印非 ASCII / 符号字符【英文标题】:print non-ASCII / symbolic characters in Matlab 【发布时间】:2013-11-19 16:05:11 【问题描述】:

我想要一份声明:

my_angle = 1*pi;
fprintf('My angle is %.3f pi.\n',my_angle/pi);

但这产生了My angle is 1.000 pi,而不是实际 π 字符。

我正在考虑使用 Unicode... 我发现了一些相关的东西:

Page on Unicode pi Sort of related SO question Perhaps a more relevant SO question

【问题讨论】:

除非您将文本放在情节上,否则它与那个 SO 问题并不真正相似。您是在写入文件还是只是尝试打印到命令窗口?也许看到this question and answer。 只是尝试打印到命令窗口。我在搜索时也看到了该页面,但在形成这个问题之前丢失了它。我已添加到问题正文中。 【参考方案1】:

我不知道如何使用 fprintf,但 sprintf 有效 - 只需去掉分号:

sprintf('My angle is %.3f %c.\n',my_angle,char(960))

或者你可以使用disp:

disp(['My angle is ' num2str(my_angle,'%.3f') ' ' char(960) '.']);

【讨论】:

虽然这应该适用于 Linux,也许还有 OSX,但我认为它不适用于 Windows。 @DanielE.Shub:不确定这是否是一个有效的测试,但在 R2013a 和 OS X 上,我更改了我的默认字符集 (feature('DefaultCharacterSet','Windows-1252')),这些仍然有效。 +1 非常有帮助和鼓舞人心。即使 扩展的 ASCII 范围内,只需在打印输出中考虑使用 char(177) 代替 +/-,或使用 char(215) 代替 ×。谢谢。 @s.bandara: 使用一点 Unicode 你可以做到crazy things in Matlab。不过,在命令窗口中显示内容更难。 哇,您将它们渲染成图像矩阵,还是将text 渲染成轴?【参考方案2】:

答案取决于您的操作系统。在 Windows 上,Matlab 使用非常有限的 windows-1252 字符集。我认为char 的值大于 255 你什么都得不到/正方形。在 Linux 上,您可以使用完整的 UTF8 字符集,并且可以将 char 与您想要的任何值一起使用。

【讨论】:

以上是关于在 Matlab 中打印非 ASCII / 符号字符的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C 中使用扩展 ASCII 表的符号?

如何在 Python 中打印非 ASCII 字符

Lua,处理非ascii字节流,字节序变化

Java 字符编码 ASCIIUnicode和UTF-8

VB6.0 中 CHR() 函数如何使用? 还有特殊符号的 ASCII 码是多少? 如回车 空格

在ASCII码字符编码中,啥字符无法显示或打印出来