MdictMdd:在 7-Zip 中打开与编辑 MDict 资源文件(.mdd)
简介
把 MDict 词典的资源文件(.mdd)当作压缩包,在 7-Zip 中直接浏览、解压、增删文件、重新打包。另附一个独立脚本用于查看/修改词典的名称与简介。
本程序完全参考mdict-utils编写,可能会与部分平台不兼容
本包只提供二进制插件和使用脚本。
注意:本程序仍属测试时期,请勿在生产环境使用。使用时请提前备份好数据,避免mdd文件损坏。
文件说明
Formats\MddFmt.dll 7-Zip 插件(MDD 格式的读写处理),核心。
mdd_rename.py 独立脚本:查看/修改 .mdd 的标题(Title)与简介(Description)。
系统要求
平台:Windows x64
7-Zip:26.02(x64) 或兼容版本。需使用完整版 7zFM.exe / 7z.exe
(7za.exe 独立版不支持加载外部格式插件)
MDD 格式:仅支持 Engine 2.0、无加密 的 MDD(见下方"兼容性")。
安装
- 找到 7-Zip 的安装目录(或便携版目录)。
- 把 Formats\MddFmt.dll 放进该目录下的 Formats\ 子文件夹。
目录结构示例:
<7-Zip>
7zFM.exe
7z.exe
7z.dll
Formats
MddFmt.dll ← 放到这里
- 重启 7-Zip。
使用方法
浏览 / 解压:
图形界面:双击 .mdd(或用 7-Zip 文件管理器7zFM.exe打开),即可看到内部的图片、字体、
脚本等资源,可预览、拖出、提取。
命令行:
7z x file.mdd 解压到当前目录
7z l file.mdd 列出内容
增删文件后保存:
在 7-Zip 中打开 .mdd,添加/删除/替换文件后保存,将按 MDD 规范重新打包。
未改动的文件会被保留.
选择压缩方式(写入时):
7-Zip 的"添加压缩包"对话框底部有 Parameters(参数)输入框,在其中填写压缩方式:
m=0 无压缩
m=1 LZO
m=2 zlib(默认,与常见 .mdd 一致)
命令行等价写法:7z a -tMdictMdd -mm=0 out.mdd folder
查看/修改标题与简介:
MDD 的名称(Title)与简介(Description)存在文件头,7-Zip 界面不便编辑。
mdd_rename.py 是纯函数式模块,不提供命令行,需在 Python 代码中 import 后调用:
import mdd_rename as M
# 读取 .mdd 的标题、简介与全部资源
info = M.get("input.mdd")
info.title # 标题(str)
info.description # 简介(str)
info.entries # 资源字典 {资源名: 字节内容}
# 修改标题/简介并另存为新文件
M.rename("input.mdd", new_title="新标题", new_description="<b>新简介</b>",
out_path="output.mdd")
# 修改标题/简介并覆盖原文件
M.rename("input.mdd", new_title="新标题", new_description="新简介")
# 只改标题,保留原简介
M.rename("input.mdd", new_title="新标题", out_path="output.mdd")
# 底层接口:直接写一组资源成 .mdd,可指定压缩方式(0/1/2)
M.write_mdd("out.mdd", info.entries, title="新标题",
description="新简介", compression_type=2)
简介支持中文、换行及任意 HTML。rename / write_mdd 只改头部元数据,文件内容
逐字节保留。
依赖 Python 3 与 mdict-utils(pip install mdict-utils 安装)。
兼容性
读取/写入支持:
- 引擎版本 Engine 2.0 (绝大多数词典资源均为此版本)
- 加密 无加密 (不支持加密 的 MDD,虽然基本上所有词典都是加密的)
- 压缩方式 无压缩 / LZO / zlib 三种 (zlib 最常见)
- 读取 打开、浏览、解压
- 写入 增删文件后重新打包
不支持的场景:
- 加密的 MDD(需要密钥)
- Engine 3.0(新格式布局,未实现)
- 7za.exe 独立版(不加载外部格式插件,请用完整版 7z.exe / 7zFM.exe)
已知说明:
- LZO 编码:未测试。
- 大文件内存:打开时会把整个 .mdd 读入内存,超过 1GB 的资源文件会占用相应内存。
- mdict-utils 的无压缩写入瑕疵:mdict-utils(writemdict)生成的无压缩(compression=0)
MDD,连它自己的 readmdict 都可能无法读回(key index 未用 zlib)。这不是本插件的
问题;若用第三方工具生成 MDD,建议使用默认 zlib。
以及文件:
7zip.zip (2.1 MB)
比较尴尬的一点是,官方默认好像就是有加密的。虽说不难绕。所以基本上打不开市面上的mdd。对mdict-utils打包的mdd反而友好。mdict-utils本身只有解密逻辑的但是没来得及写。


