一个纯前端、单文件的在线编码转换工具。支持链式编码转换,类似 CyberChef 的操作体验。
- 单文件部署: 构建产物为单个
index.html,零外部依赖,离线可用 - 14 种编码支持: UTF-8, UTF-16LE/BE, GBK, GB18030, Shift-JIS, EUC-JP, Big5, EUC-KR, ISO-8859-1, Windows-1252, ISO-2022-JP, KOI8-R, ISO-8859-5
- 链式操作: 支持多步骤编码转换,类似 Python 的
"...".encode("gbk").decode("utf-8") - 多种输入格式: 原始文本、十六进制、Base64、转义序列
- 收藏与分享: localStorage 持久化 + URL hash 分享链接
- MD2 风格: Material Design 2 视觉风格,响应式布局
- XSS 安全: 所有用户输入通过 textContent 渲染
pnpm installpnpm devpnpm build构建产物位于 dist/index.html,可直接打开使用。
pnpm testpnpm generate-tables从 WHATWG Encoding Standard 下载并生成编码映射表。
encodingchef/
├── docs/expect/ # 需求文档
├── scripts/ # 构建脚本
│ └── generate-tables.ts # 码表生成脚本
├── src/
│ ├── __tests__/ # 单元测试
│ ├── components/ # Svelte 组件
│ ├── lib/
│ │ ├── encoding/ # 编码引擎
│ │ │ ├── tables/ # 生成的映射表
│ │ │ ├── index.ts # 编码注册表
│ │ │ ├── types.ts # 类型定义
│ │ │ └── ... # 编解码器实现
│ │ ├── operations/ # 操作实现
│ │ ├── recipe/ # 配方管理
│ │ ├── security/ # XSS 防护
│ │ └── utils/ # 工具函数
│ ├── App.svelte # 根组件
│ ├── app.css # 全局样式
│ └── main.ts # 入口
├── index.html # HTML 入口
├── package.json
├── svelte.config.js
├── tsconfig.json
└── vite.config.ts
| 操作 | 描述 |
|---|---|
| Encode | 字符串 → 字节 |
| Decode | 字节 → 字符串 |
| Hex View | 字节 → 十六进制显示 |
| Base64 | Base64 编码 |
| URL Encode | URL 编码 |
| URL Decode | URL 解码 |
| Byte Swap | 大小端切换 |
每个步骤支持三种错误处理策略:
- 跳过: 跳过无效字节,继续处理(会提示跳过了哪些位置)
- 替换字符: 替换为
�(U+FFFD) - 中断: 遇到错误立即停止
- 构建好操作步骤链
- 点击"分享"按钮
- 复制生成的 URL 链接
- 发送给他人,打开后自动加载配方
- 框架: Svelte 5 (Runes)
- 构建工具: Vite + pnpm
- 单文件打包: vite-plugin-singlefile
- 编码标准: WHATWG Encoding Standard
- UI 风格: Material Design 2 (纯 CSS)
MIT