我们在 dxf/dwg 多行文本实体中看到一些不熟悉的编码文本,例如 \M+5BCFE\M+5BAC5,它应该是汉字“件号”。有人认识这些编码并知道如何解码它们吗?
在 Google 上搜索并询问 ChatGPT,但没有任何结果。
来自 Unicode 和 DXF 文件:
DXF 交换中表示的文本(文本对象的内容) 格式文件(DWG 的文本版本)以纯 ASCII 格式存储 到 AutoCAD 2017 版。特殊字符 - 例如捷克, 亚洲, 西里尔字母 - 使用 MIF(Maker Interchange 格式,语法:
)或CIF(通用交换格式,语法:M+nxxyy
)代码。U+nnnn
自 2007 版起,DXF 文件以 Unicode (UTF-8) 格式保存和加载。 因此任何特殊字符也可以直接存储到 DXF 中。但 它们仍然可以从 MIF 和 CIF 代码进行解释。什么时候 解释代码,
的当前设置 应用变量。DWGCODEPAGE
关于 M+nxxyy
语法中的
n,请阅读
AdCharFormatter::getMIFCodePage
:
此静态方法检索给定索引的代码页值。 ch 必须在
(0x31) 到'1'
(0x35) 范围内。'5'
如果 ch 不代表有效索引,则返回零。否则,它 返回以下值之一:
- 932 - Shift-JIS(日语)
- 950 - 大5(繁体中文)
- 949 - KS C-5601-1987(万松)
- 1361 - KS C-5601-1992(约哈布)
- 936 - GB 2312-80(简体中文)
让我们检查一下(Python 中的示例,以了解其通用的可理解性):
'件号'.encode('gb2312-80')
b'\xbc\xfe\xba\xc5'
我们看到与 \M+5
BCFE\M+5BAC5 中相同的十六进制值
bc fe ba c5