QGIS导出CAD文字乱码?DXF参数怎么设?
QGIS导出CAD文字乱码?DXF参数怎么设? 这是很多 GIS 同学在把 Shapefile、GeoPackage 或项目图层交付给 CAD 同事时最常遇到的问题:在 QGIS 里看属性和标注都正常,导出 DXF 后用 AutoCAD、浩辰 CAD 或天正打开,中文地名、道路名、编号说明却变成问号、方块或一串乱码。
这篇文章只解决一个具体问题:如何在 QGIS 中正确导出 DXF,尽量避免 CAD 中文文字乱码,并说明 DXF 编码、字体、标注转文字、字段内容这几个关键参数应该怎么检查。

引言:QGIS导出CAD文字乱码通常不是一个参数造成的
很多人遇到 QGIS导出CAD文字乱码 后,第一反应是“是不是编码选错了”。编码确实重要,但它不是唯一原因。
在实际项目里,DXF 中文乱码常见原因包括:
- 导出 DXF 时编码与 CAD 软件读取编码不一致。
- QGIS 标注使用的字体,CAD 电脑上没有安装。
- 导出的文字对象没有正确指定 CAD 可识别的字体样式。
- 属性字段本身已经存在编码问题,例如从旧版 Shapefile 复制来的中文字段。
- QGIS 只导出了几何对象,没有把标注按预期转换成 CAD 文字。
所以,正确做法不是盲目重复导出,而是按“源数据检查 → QGIS 标注检查 → DXF 参数设置 → CAD 端字体验证”的顺序排查。
背景:为什么 QGIS 里正常,CAD 打开 DXF 却乱码
QGIS 和 CAD 对文字的处理逻辑不同。QGIS 显示中文时,主要依赖操作系统字体和图层属性表中的字符串;CAD 打开 DXF 时,还要识别 DXF 文件中的文字编码、文字样式、字体名称和实体类型。
这就会出现一个典型现象:同一个字段,在 QGIS 属性表中显示“人民路”,导出 DXF 后在 CAD 里变成“????”或“浜烘皯璺”。
这类问题一般分成三类:
- 编码乱码:中文字符被按错误编码解释,例如 UTF-8 被当成 ANSI 或 GBK 读取。
- 字体缺失:DXF 中记录了字体名称,但 CAD 电脑没有该字体,替换后无法正确显示中文。
- 标注未转换:QGIS 中看到的是动态标注,导出时没有变成 DXF 文字实体,CAD 中自然看不到或显示异常。
理解这三类原因后,QGIS导出CAD文字乱码 的排查会清晰很多。
原理:DXF文字、编码和字体到底是什么关系
DXF 是 CAD 常用交换格式,它可以保存线、面、点、文字、图层、颜色等信息。对于 GIS 到 CAD 的交付,最容易出问题的是文字。
1. 编码决定“文字内容如何被解释”
编码可以理解为字符和字节之间的转换规则。常见编码包括 UTF-8、GBK、GB18030、ANSI 等。
如果 QGIS 写入 DXF 时使用 UTF-8,而 CAD 端按本地 ANSI 或 GBK 去读,就可能出现乱码。反过来,如果源数据是 GBK,但导出时被错误当成 UTF-8,也会乱码。
2. 字体决定“文字能不能被正确画出来”
即使编码正确,如果 CAD 使用的字体不支持中文,也可能显示为方框或问号。例如某些西文字体只包含英文字母和数字,不包含中文字符。
在 CAD 交付中,建议使用 CAD 环境常见的中文字体,例如宋体、黑体,或 CAD 常用的中文 SHX 字体。具体使用哪一种,应与接收方 CAD 环境保持一致。
3. QGIS标注不等于CAD文字
QGIS 地图画布上的标注是渲染结果,不一定天然存在于数据里。导出 DXF 时,需要让 QGIS 把标注转换为 DXF 的文字实体,否则 CAD 中可能只有线面图形,没有文字。
因此,QGIS DXF参数设置 的核心并不是只看“保存为 DXF”,还要确认标注来源、文字字段、编码和字体样式。
步骤:QGIS导出CAD文字乱码的推荐设置流程
步骤一:先确认源数据中文字段是否正常
在导出 DXF 之前,先打开 QGIS 属性表检查中文字段。
- 在 QGIS 中加载需要导出的图层。
- 右键图层,打开属性表。
- 找到用于标注的字段,例如 name、道路名、地类名称、编号说明。
- 确认字段中的中文在 QGIS 属性表中是正常的,而不是已经乱码。
如果属性表里已经乱码,说明问题发生在数据读取阶段,不是 DXF 导出阶段。此时应先修复源数据编码。
对于 Shapefile,可以检查同名的 .cpg 文件。如果没有 .cpg,QGIS 可能会猜测编码。可以尝试在加载数据时指定 GBK、GB18030 或 UTF-8,直到属性表显示正常。
步骤二:设置 QGIS 图层标注
如果你希望 CAD 中出现地名、道路名或地块编号,需要先在 QGIS 中把标注配置好。
- 右键图层,选择图层属性。
- 进入标注设置。
- 选择“单一标注”或对应的标注方式。
- 标注字段选择要导出的中文字段。
- 字体建议先选择常见中文字体,例如宋体或黑体。
- 在 QGIS 地图画布中确认标注位置和内容基本正确。
这里有一个实用原则:如果 QGIS 画布上都没有显示出正确文字,不要急着导出 DXF。先把标注显示问题解决,再处理 CAD 兼容问题。
步骤三:使用“项目导入/导出”导出 DXF
在 QGIS 中导出 CAD,通常可以从菜单进入:
项目 → 导入/导出 → 导出项目为 DXF
不同 QGIS 版本的菜单文字可能略有差异,但核心参数类似。建议重点检查以下选项:
| 参数 | 建议设置 | 说明 |
|---|---|---|
| 导出范围 | 当前地图范围或指定范围 | 避免导出无关区域,减少 CAD 文件复杂度。 |
| 图层 | 只勾选需要交付的图层 | 不要把底图、临时图层、测试图层一起导出。 |
| 编码 | 优先测试 UTF-8;若 CAD 端乱码,再测试 GBK 或 GB18030 | 应以接收方 CAD 软件实际打开效果为准。 |
| 标注导出 | 启用标注导出或将标注作为文字输出 | 否则 CAD 中可能没有文字。 |
| 符号图层比例 | 保持与当前制图比例一致 | 影响线宽、符号和文字大小的表现。 |
如果你的目标是给 CAD 人员继续编辑,建议不要导出过多复杂符号。GIS 中的复杂样式在 CAD 中不一定能完全还原。
步骤四:优先测试 UTF-8,再按 CAD 环境调整编码
QGIS导出DXF中文乱码 最常用的排查方式是小范围测试,而不是一次导出全市数据。
- 选取一个包含 5 到 10 个中文标注的小区域。
- 分别导出 UTF-8、GBK、GB18030 三个 DXF 测试文件。
- 用接收方实际使用的 CAD 软件打开。
- 记录哪个编码打开中文最稳定。
- 确认后再导出完整数据。
为什么要用接收方 CAD 测试?因为不同 CAD 软件、不同版本、不同系统语言环境,对 DXF 编码的处理可能不完全一致。GIS 端看起来正确,不代表 CAD 端一定正确。
步骤五:在 CAD 中检查文字样式和字体替换
如果 DXF 打开后不是乱码,而是方框、空白或问号,重点检查 CAD 字体。
- 在 CAD 中选中一个异常文字对象。
- 查看它使用的文字样式。
- 检查该文字样式对应字体是否支持中文。
- 尝试把字体改为宋体、黑体或接收方指定的中文字体。
- 重新生成或刷新显示,查看中文是否恢复。
如果修改字体后中文恢复,说明主要问题不是 DXF 编码,而是 CAD 字体缺失或文字样式不兼容。
步骤六:必要时把标注转为独立文字图层再导出
如果项目中标注规则比较复杂,例如表达式标注、多字段拼接、带换行的编号说明,直接导出 DXF 可能不稳定。可以考虑先在 QGIS 中生成一个独立的文字点图层,再交给 CAD。
思路如下:
- 把需要显示的文字内容整理成一个字段,例如 label_text。
- 对线或面图层生成代表点或中心点。
- 把 label_text 字段保留在点图层中。
- 使用该点图层设置标注。
- 再导出 DXF 并检查文字效果。
这种方法虽然多一步,但对于地块编号、管线编号、设施名称等交付型数据更可控。
常见坑:这些设置会导致 QGIS导出CAD文字乱码
坑一:只改 DXF 编码,不检查源数据编码
如果 Shapefile 属性表在 QGIS 中已经乱码,导出 DXF 时再怎么改编码也很难恢复。应先确保源字段正常显示。
坑二:使用了 CAD 不支持的字体
QGIS 中使用的字体不一定存在于 CAD 电脑上。特别是某些设计字体、系统专用字体或第三方字体,到了对方电脑可能被替换。
交付前最好与 CAD 同事确认统一字体。如果没有明确要求,优先选择常见中文字体。
坑三:以为 QGIS 标注一定会导出为 CAD 文字
QGIS 标注是地图渲染的一部分,DXF 导出时需要相应参数支持。导出后如果 CAD 中没有文字,先检查是否启用了标注输出,而不是只检查编码。
坑四:把所有图层一次性导出
图层太多、样式太复杂、字段来源混乱时,问题会叠加。建议先用一个图层测试 DXF参数怎么设,再扩展到完整项目。
坑五:没有用接收方软件验收
你用一个 CAD 软件打开正常,不代表对方的软件打开也正常。正式交付前,至少用对方实际使用的软件和版本测试一次。
方法比较:不同处理方式适合什么场景
| 方法 | 适用场景 | 优点 | 限制 |
|---|---|---|---|
| 直接从 QGIS 导出 DXF | 图层简单、标注规则简单、交付要求不复杂 | 操作快,适合常规线面数据交付 | 复杂标注和字体兼容性需要测试 |
| 调整编码后多版本测试 | CAD 中文乱码、不确定接收方编码环境 | 最直接定位编码问题 | 需要接收方 CAD 软件验证 |
| 统一 CAD 中文字体 | 文字显示为方框、问号、空白 | 能解决大量字体缺失问题 | 需要 CAD 端配合安装或替换字体 |
| 生成独立文字点图层再导出 | 地块编号、设施名称、复杂表达式标注 | 结果更可控,便于检查 | 流程稍长,需要额外整理字段 |
| 改用 DWG 中间转换工具 | 单位有严格 CAD 标准或必须交付 DWG | 更贴近 CAD 工作流 | 可能需要商业软件或额外转换步骤 |
对于大多数 GIS 到 CAD 的普通交付,推荐先采用“QGIS 小范围 DXF 测试 + 编码对比 + CAD 字体验证”的方法。它成本低,也最容易定位 QGIS导出CAD文字乱码 的真实原因。
检查清单:导出 DXF 前后逐项确认
正式交付前,可以按下面清单检查:
- QGIS 属性表中的中文字段是否显示正常。
- 用于标注的字段是否为空,是否存在特殊符号或换行。
- QGIS 地图画布中的标注是否已经正确显示。
- 导出 DXF 时是否勾选了需要导出的图层。
- 是否启用了标注输出或文字输出相关选项。
- 是否分别测试过 UTF-8、GBK 或 GB18030 编码。
- CAD 端是否安装了支持中文的字体。
- CAD 文字样式是否被替换成不支持中文的字体。
- 是否使用接收方实际 CAD 软件打开测试。
- 是否先用小范围样例验证,再导出完整数据。
经验建议:不要在完整项目上反复试错。先准备一个只有少量中文标注的测试图层,用它确定 QGIS DXF参数设置,再批量导出正式成果。
FAQ:QGIS导出CAD文字乱码常见问题
Q1:QGIS导出CAD文字乱码,编码应该选 UTF-8 还是 GBK?
没有一个对所有 CAD 环境都绝对正确的答案。建议先测试 UTF-8;如果接收方 CAD 打开乱码,再测试 GBK 或 GB18030。最终以对方实际 CAD 软件打开结果为准。
Q2:为什么 QGIS 中中文正常,导出 DXF 后 CAD 还是问号?
这通常不是 QGIS 显示问题,而是 DXF 编码或 CAD 字体问题。先检查导出编码,再检查 CAD 文字样式使用的字体是否支持中文。
Q3:QGIS导出DXF中文乱码和 Shapefile 的 .cpg 文件有关吗?
有关。如果 Shapefile 的 .cpg 文件缺失或编码声明错误,QGIS 读取属性时可能已经发生编码误判。应先让 QGIS 属性表中文显示正确,再导出 DXF。
Q4:CAD 中完全没有文字,是不是乱码?
不一定。完全没有文字更可能是标注没有导出,或者图层没有被勾选。乱码通常表现为问号、方框或异常字符。应先检查 DXF 导出时是否启用了标注输出。
Q5:QGIS 的标注表达式能完整导出到 CAD 吗?
简单字段标注通常更稳定。复杂表达式、多字段拼接、条件标注、换行标注在 DXF 中可能表现不一致。重要交付建议先生成一个明确的文字字段,再导出。
Q6:为什么同一个 DXF,在我的 CAD 正常,在别人电脑乱码?
常见原因是两台电脑的 CAD 版本、系统区域设置或字体库不同。尤其是字体缺失时,同一个 DXF 在不同电脑上的显示效果可能不同。
Q7:QGIS 导出 DXF 后文字位置偏移怎么办?
这通常与标注转换、比例、地图单位和 CAD 字体替换有关。可以先固定导出比例,减少复杂标注规则,并在 CAD 中检查文字高度和对齐方式。
结论:DXF参数怎么设,要按编码、字体、标注三条线一起排查
QGIS导出CAD文字乱码 不是单纯“选哪个编码”的问题。正确流程是:先确认源数据中文正常,再设置 QGIS 标注,然后用小范围样例测试 DXF 编码,最后在 CAD 端检查字体和文字样式。
如果只记住一个实用方案,可以这样做:用少量中文样例分别导出 UTF-8、GBK、GB18030 三个 DXF,交给接收方 CAD 打开测试;同时统一使用 CAD 可识别的中文字体,并确认标注已作为文字输出。这样处理后,大多数 QGIS导出DXF中文乱码 问题都能快速定位并解决。