Fluent 启动界面或控制台里弹出一堆方块和问号,编译 UDF 的时候控制台刷屏的报错信息全变成乱码,什么都看不见。乱码本身不影响计算,但报错信息读不懂,调试效率直接掉一半。路径里带中文是最常见的原因,不管是 case 文件路径还是 UDF 源文件路径,先全部改成英文,D:\Fluent_work\ 这种,中文路径下 Fluent 读文件的时候编码对不上,轻则乱码重则直接报错打不开。
系统字体缺失也会导致启动界面乱码,ANSYS 安装目录下面有一堆 .ttf 字体文件,散落在各个子文件夹里,用 everything 或者 listary 搜 *.ttf,找到之后全选拷贝到 C:\Windows\Fonts 下面安装,装完重启 Fluent 显示就正常了。这个办法在贴吧和知乎上都被验证过,装完字体启动界面立刻恢复。
Windows 系统区域设置是另一个根源。控制面板→区域→管理→更改系统区域设置,如果当前设置是“中文(简体,中国)”,有些 Fluent 版本的内部编码跟这个不兼容,控制台输出的中文全变乱码。改成“英语(美国)”之后重启电脑,乱码消失。代价是其他一些中文软件可能显示不正常,不过大部分国产软件现在都兼容了,影响不大。有篇文章说 Fluent 2020 R1 之后已经全面支持中文,启动的时候在 Environment 选项卡里加一句 lang=zh 就行,不需要改系统区域设置。
UDF 编译的乱码跟内建编译器有关。Fluent 内建的编译器是通过 Python 的 scons 库实现的,相关脚本文件是 sconstruct.udf 和 scons_test.bat,这两个文件里的编译命令路径没有加双引号,而 ANSYS 默认安装路径里带空格(比如 G:\ANSYS Inc...),路径一断编译器就报错,控制台输出一堆乱码。解决方法是手动给这两个文件里的 CC和CC和CLINK 变量加上双引号,scons_test.bat 第 3 行也是同样的问题。改完再用内建编译器编译 UDF,控制台输出就正常了。这个坑在 B 站和博客园上都有记录,路径里的空格是根源。

Transcript 文件是绕开乱码最省事的办法。File→Write→Start Transcript,选个路径开始记录,然后该编译编译该报错报错,控制台里该乱码还是乱码,但 Transcript 文件里存的是原始数据,用记事本或者 VS Code 打开,中文正常显示。UDF 编译的语法错误信息、printf 输出的调试信息、警告信息,在控制台里全是乱码,在 Transcript 文件里都能读。编译完 File→Write→Stop Transcript 停止记录,打开文件搜 Error 关键字,具体的错误行数和原因一目了然。这个办法不解决乱码本身,但绕过了显示层,调试效率直接拉回来。D:\Fluent_work\transcript\ 下面放几个之前记录的日志文件,命名带时间戳,下次编译报错先开 Transcript 再编译。
后处理导出数据文件的时候也有乱码的坑。dat 文件是二进制格式,用记事本打开就是乱码,这个不是错误,dat 本来就是给 Fluent 自己读的,想看数据用 CFD-Post 或者导出成 CSV。如果一定要在文本编辑器里看 dat,存的时候选 ASCII 格式,体积会大很多倍,但内容可读。那些说 dat 文件乱码的帖子,回复基本都是“dat 是二进制的,别用记事本打开”,属于正常现象不是报错。
D:\Fluent_work\ 下面那个 UDF 的 sconstruct.udf 文件还没改双引号,内建编译器跑一次就报一次乱码,改法是找到 CC和CC和CLINK 那两行,把路径变量用双引号包起来,那个行号大概是 204 到 208 附近,具体是……
保存为.txt文件,用记事本打开即可看到非乱码报错信息
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删