摩尔斯电码编解码器是一个单输入框, 双模式的工具. 页面上有编码/解码切换, 一个文本框, 以及当有内容时才出现的输出行, 带播放和复制两个按钮. 没有运行按钮, 也没有任何配置项: 输入或粘贴, 结果就在同一按键上出现. 背后的码表覆盖 54 个单符号: 26 个字母, 10 个数字, 空格和 17 个标点, 所有转换都在设备的浏览器里运行, 文本不会发送到任何地方.
双模式, 一个输入框
编码是默认模式, 把文本变成点和划; 解码相反, 把点和划的字符串还原成文本. 切换只换掉同一个文本框的标签和占位符, 输出随输入实时更新. 输出区只有在有内容时才存在: 空输入或纯空白输入时, 页面上只有切换按钮和文本框. 输出行上有两个按钮, 一个播放音频, 一个复制到剪贴板, 文本框下方是完整的码表参考格, 列出全部符号和图案.
54 个符号的码表
码表覆盖 A 到 Z 的 26 个字母, 0 到 9 的 10 个数字, 空格, 以及 17 个标点: 句号, 逗号, 问号, 叹号, 斜杠, 左右圆括号, 与号, 冒号, 分号, 等号, 加号, 连字符, 下划线, 双引号, 美元符号和 at 符号. 每个符号有自己固定的点和划组合: E 是一个点, T 是一个划, S 是三个点, O 是三个划. 空格不是一个图案, 而是斜杠, 也就是词分隔符. 输入框下方的网格把 54 个符号及其图案全部列出, 打字时想查哪个字母, 看它是最快的.
编码如何处理空白和未知字符
编码先把输入转成大写, 然后逐个字符处理. 任何空白字符, 空格, 换行或制表符, 都变成斜杠, 所以粘贴段落里的换行按词间分隔处理, 整段文本编码成一行. 其余每个字符查表, 不在表里的字符, 比如 # 号或其它字母表的字母, 原样保留在码的中间, 不报错也不丢弃. 结果用单空格连接各符号, 无论输入怎么换行, 输出永远是一行空格分隔的码.
解码如何还原文本
解码把输入按连续空白切分, 一个或多个空格, 制表符或换行都行, 每个切出来的片段查反查表. 空白只是字母分隔符: ... --- ... 中间就算隔多个空格, 解出来也是不带空格的 SOS, 因为输入里的空格永远不会变成文本里的空格. 唯一能产生空格的是斜杠, 也就是编码写在词与词之间的那个记号. 不是已知图案的片段解码成问号而不是被丢弃, 所以打错的字母会以可见的 ? 出现在句子中间, 方便定位.
边界: 句号和引号共用一个码
在国际码表里, 句号和双引号共用同一个图案, 点划点划点, 而一张查找表只能把一个图案映射到一个字符. 本工具把这个冲突解析为句号, 因为句号在普通文本里更常见, 所以散文能来回还原. 实际后果是双引号还原不了: 把 (, 双引号, ) 三个字符编码再解码, 双引号的位置变回了句号, 这个图案永远不会解出双引号. 大小写是往返的第二个损失: 编码先把输入转成大写, 所以 Hi, I am Claude 2026 回来是 HI, I AM CLAUDE 2026, 字母都对, 但没有小写.
音频播放
播放按钮按经典点距把输出渲染成 600 赫兹的音. 一个点响 100 毫秒, 一个划响 300 毫秒, 字母内符号之间的沉默就是文本里已有的间隙, 一个连接空格按 300 毫秒计. 斜杠不发声, 但占 700 毫秒, 七个点, 标准词距; 因为编码在斜杠两侧各写一个空格, 两个词之间的完整沉默约为 1.3 秒. 解码模式下输出是纯文本, 播放基本只有间隙: 字母和标点各占 300 毫秒的沉默, 文本里若含点或划则照常发声.
工具保留什么, 下一步去哪
不保留任何东西: 不发网络请求, 不存储, 重新加载页面清空文本框和输出. 编码工作流的其余部分, 用文本/二进制转换器把同一文本写成 0 和 1 的位串, 用Base64 编解码器把文本映射到邮件和网页载荷用的 64 字符字母表, 用URL 编解码器看百分号编码对同一字符串做了什么. 想看历史另一端的经典密码, 见凯撒密码指南.