适用场景:Windows 系统下使用 Quartus 打开 VHD / VHDL 工程时,中文注释在 VSCode 中显示正常,但在 Quartus 里变成乱码、问号、方块或者一串异常字符。

一、问题现象

在 FPGA 工程里,经常会在 .vhd、.vhdl、.v、.sv 等源码文件中写中文注释。用 VSCode 打开时注释是正常的,但切换到 Quartus 后,中文注释可能会变成乱码,甚至整段注释都无法阅读。

这种问题一般不是代码语法错误,而是文件编码和 Quartus / Windows 非 Unicode 程序编码环境不一致导致的。尤其是一些较老版本的 Quartus,对 UTF-8 中文注释的兼容性并不稳定,如果工程文件是 UTF-8,而 Quartus 按 GBK 或系统默认 ANSI 编码去解析,就很容易出现乱码。

解决这类问题可以按下面的顺序排查:

  1. 先检查源码文件本身是不是 UTF-8;
  2. 如果是 UTF-8,将工程中的 VHD 源文件保存为 GBK;
  3. 如果文件已经是 GBK,但 Quartus 仍然乱码,再检查 Windows 的系统区域设置;
  4. 关闭“Beta:使用 Unicode UTF-8 提供全球语言支持”。

操作前先复制一份工程备份,避免在乱码状态下误保存,导致原来的中文注释被二次破坏。

二、先在 VSCode 里检查 VHD 文件编码

首先用 VSCode 打开 Quartus 工程目录,找到工程中的 VHD / VHDL 源文件。如果工程文件比较多,可以在资源管理器中搜索 .vhd,也可以直接在左侧文件列表中选中需要处理的源码文件。

打开一个源码文件后,看 VSCode 右下角的编码显示。如果右下角显示的是 UTF-8,说明当前文件是按 UTF-8 编码保存的。这个编码在 VSCode 里一般不会出问题,但在部分 Quartus 环境中打开时,中文注释就可能被错误解析。

处理方式如下:

  1. 在 VSCode 中打开需要处理的 .vhd 文件;
  2. 点击右下角的 UTF-8;
  3. 选择 Save with Encoding;
  4. 选择 Simplified Chinese (GBK);
  5. 保存后关闭 Quartus,再重新打开工程查看中文注释。

如果工程中有多个 VHD 文件,需要保证这些源码文件的编码尽量统一。不要出现一部分文件是 UTF-8,另一部分文件是 GBK 的情况,否则后续换电脑、换版本或者重新打开工程时,还可能再次出现乱码。

三、为什么 Quartus 更容易受 GBK / UTF-8 影响

VSCode、Notepad++ 这类编辑器对编码识别比较灵活,能比较好地处理 UTF-8、GBK、UTF-8 with BOM 等格式。但 Quartus 的源码编辑器并不是专门为多编码文本编辑设计的,部分版本在中文注释显示上更依赖 Windows 当前的系统区域和默认代码页。

简单理解就是:

  • 文件是 UTF-8,但 Quartus 按 GBK 去读,中文会乱码;
  • 文件是 GBK,但 Windows 当前非 Unicode 程序环境被改成 UTF-8,也可能乱码;
  • 工程里混用了 UTF-8 和 GBK,不同文件显示结果可能不一致;
  • 在乱码状态下直接保存,可能会把原来正常的中文注释覆盖成真正损坏的乱码。

所以处理 Quartus 中文乱码时,不要只盯着 Quartus 本身,文件编码和 Windows 区域设置都要一起检查。

四、如果已经是 GBK,Quartus 仍然乱码

有些情况下,源码文件本身已经是 GBK,但 Quartus 中中文注释仍然显示异常。

这种情况通常和 Windows 的“非 Unicode 程序语言”设置有关。Quartus 这类软件在处理中文路径、中文注释或旧编码文本时,会受到系统区域设置影响。需要进入控制面板进行检查。

五、进入 Windows 控制面板修改区域设置

打开 Windows 控制面板,找到“区域”设置。Windows 10 / Windows 11 都可以按下面的方式进入:

  1. 按 Win + R;
  2. 输入 control 并回车;
  3. 在控制面板中进入“时钟和区域”;
  4. 点击“区域”。

进入“区域”窗口后,切换到上方的“管理”选项卡,然后点击“更改系统区域设置”。

在弹出的窗口里,确认“当前系统区域设置”选择为:

中文(简体,中国)

如果这里不是中文简体环境,就把它改成“中文(简体,中国)”。这个设置会影响非 Unicode 程序读取中文时使用的默认代码页。

六、取消勾选 Windows 的 UTF-8 Beta 选项

在“区域设置”窗口下方,有些 Windows 版本会出现这个选项:

Beta: 使用 Unicode UTF-8 提供全球语言支持

处理 Quartus 中文乱码时,这个选项一定要取消勾选。

取消勾选后点击“确定”。系统通常会提示重启电脑,重启后再打开 Quartus 工程,检查中文注释是否恢复正常。

这个选项开启后,Windows 会把很多非 Unicode 程序的默认代码页切换到 UTF-8。听起来像是更现代的设置,但对依赖 GBK / ANSI 环境的软件来说,反而容易导致中文显示异常。Quartus 工程里的中文注释如果是 GBK 保存的,开启这个选项后就可能出现乱码。

七、完整排查流程

可以按下面这个流程快速定位问题:

Quartus 中文乱码
        │
        ├─ VSCode 打开源码,看右下角编码
        │
        ├─ 如果是 UTF-8
        │      └─ 保存为 Simplified Chinese (GBK),重新打开 Quartus
        │
        ├─ 如果已经是 GBK 但 Quartus 仍然乱码
        │      └─ 控制面板 → 区域 → 管理 → 更改系统区域设置
        │
        ├─ 系统区域设置为 中文(简体,中国)
        │
        └─ 取消勾选 “Beta: 使用 Unicode UTF-8 提供全球语言支持”
               └─ 重启电脑后重新打开工程

一般情况下,完成“源码文件转 GBK”和“关闭 UTF-8 Beta”这两步后,Quartus 中的中文注释就能恢复正常显示。

八、几个容易踩坑的地方

1. 不要在乱码状态下直接保存

如果 Quartus 里已经显示乱码,不要立刻按保存。此时保存可能会把乱码写回文件,导致原来的中文注释被覆盖。正确做法是先关闭 Quartus,用 VSCode 检查源文件编码,确认中文注释是否还正常。

2. 不要只转换一个文件

工程中如果有多个 .vhd 文件,只转换当前打开的一个文件可能不够。后续打开其他模块时仍然会乱码。最好把工程里的 VHD / VHDL 源文件统一检查一遍。

3. 注意 UTF-8 with BOM

有些编辑器会把文件保存成 UTF-8 with BOM。这对普通文本编辑没有太大影响,但在部分 EDA 软件中也可能引起识别问题。为了减少兼容性问题,中文注释较多的 Quartus 老工程可以统一使用 GBK。

4. 新工程最好一开始就统一编码

如果团队里多人协作,同一个工程不要混用编码。可以在工程说明里写清楚:源码文件统一使用 GBK,或者统一使用 UTF-8 并确认 Quartus 版本可以正常显示。只要团队编码规则一致,乱码问题会少很多。

5. 工程路径也尽量简单

虽然本问题主要是源码编码导致的,但在 FPGA 工程中,工程路径也尽量不要包含过多特殊字符。路径可以使用英文、数字和下划线,减少软件识别路径时出现其他兼容性问题。

九、处理后的验证方法

设置完成后,可以按下面几步确认是否修复:

  1. 重启电脑;
  2. 重新打开 Quartus;
  3. 重新打开原来的工程;
  4. 打开含有中文注释的 .vhd 文件;
  5. 检查中文注释是否正常显示;
  6. 再用 VSCode 打开同一个文件,确认两边显示一致。

如果 VSCode 和 Quartus 中的中文注释都正常,说明编码问题已经处理完成。

十、总结

Quartus 工程中文注释乱码,本质上大多是编码不一致造成的。最常见的处理方式就是两步:

第一步:把工程中的 VHD / VHDL 源码文件保存为 GBK
第二步:关闭 Windows 的 “Beta: 使用 Unicode UTF-8 提供全球语言支持”

如果源码文件是 UTF-8,先用 VSCode 转成 Simplified Chinese (GBK);如果源码已经是 GBK 但 Quartus 仍然乱码,就进入 Windows 控制面板,把系统区域设置改为 中文(简体,中国),并取消勾选 UTF-8 Beta 选项,最后重启电脑。

处理这类问题的关键是:先备份、再确认编码、最后统一工程环境。只要文件编码和系统区域设置一致,Quartus 中的中文注释乱码问题基本都能解决。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐