Delphi DFM文件是否默认始终以ANSI编码保存?
Delphi 11中DFM文件始终以ANSI编码保存的问题解答
这是Delphi的设计特性,并非Bug。
核心原因
Delphi对DFM文件的编码处理有独立于IDE默认文件编码的规则:
- 传统上,文本格式的DFM文件默认采用当前系统的ANSI代码页保存,IDE的「默认文件编码」设置仅作用于PAS等常规源码文件,不会覆盖DFM的特定编码逻辑。
- 即使打开原本是UTF-8编码的DFM文件,在Delphi中编辑保存后,IDE会自动将其转换回系统ANSI编码,这是由DFM文件的原生处理机制决定的。
官方文档依据
Embarcadero的Delphi官方文档中明确说明:
文本格式的表单文件(.dfm)默认使用当前系统的ANSI代码页进行存储。若需要以UTF-8编码保存DFM,需通过显式配置实现。
强制DFM使用UTF-8的方法
若要让DFM文件以UTF-8编码保存,可通过以下两种方式:
- 单文件级别:在文本格式的DFM文件最顶部添加
{$CODEPAGE UTF8}指令,保存后该文件会强制以UTF-8编码存储。 - 项目级别:进入
Project > Options > Delphi Compiler > Compiling,找到「Code Page」选项并设置为UTF-8,此项目下所有新建或编辑的DFM文件都会以UTF-8编码保存。
内容的提问来源于stack exchange,提问作者Matthias B
相关产品推荐
相关产品推荐

