摩斯电码转换器
在文本与摩斯电码之间双向转换:编码时把字母、数字与常用标点换成点划(字母之间空格、单词之间用 / ),解码时按空格与 / 还原文本,并容忍 · — 这类排版变体。表外字符(中文、日文、emoji 等)不做近似编码,一律跳过并在结果下方列出。转换全部在浏览器本地完成,内容不上传、不保存。
摩斯电码用点与划表示字母数字,是无线电通信史上的经典编码,如今常见于趣味题、密室游戏与业余无线电通联。这个工具做文本与点划之间的双向转换:字母之间用空格、单词之间用斜杠,与业余无线电的通行写法一致。
两点边界说明:表内覆盖 54 个码位(26 个字母、10 个数字与 18 个常用标点),中文、日文与 emoji 不做近似编码,一律跳过并在结果下方列出,便于核对;解码时容忍排版变体(中点、破折号等字符都能识别),遇到无法识别的码组会明确提示,而不是猜一个结果。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 选择方向:文本转摩斯(编码)或摩斯转文本(解码)。
- 粘贴内容,结果即时显示;编码结果里字母间是空格、单词间是斜杠。
- 看「跳过字符」列表:出现中文或 emoji 属预期行为,不会被近似替换。
- 用于练习时把结果复制到电键模拟器或练习软件里对照。
计算原理与示例
书写约定
编码时字母之间用单个空格分隔,单词之间用「 / 」——这是业余无线电与电报的通行写法:SOS 写作 ... --- ...,HELLO WORLD 写作 .... . .-.. .-.. --- / .-- --- .-. .-.. -..。解码时对分隔符很宽容:空格、Tab、换行都算字母分隔,斜杠、竖线与换行都算单词分隔。
支持哪些字符
共支持 54 个码位:26 个字母(不分大小写)、10 个数字,以及句号、逗号、问号、单引号、感叹号、连字符、斜杠、圆括号、&、冒号、分号、等号、加号、下划线、双引号、美元符号、@ 共 18 个标点。表内没有的字符不会被「猜」成相近的码。
表外字符如何处理
中文等表外字符会跳过,并在结果下方逐个列出(例如「hi 中文 hi」只编码前后两个 hi)。原因不是偷懒:国际摩斯表本身没有汉字码位,中文电报另有一套四位数字的「中文电码」(如「中」= 0022),两者并不通用。解码时遇到长度或组合不合法的码组同样跳过并列出,其余部分照常解出。
口径:采用 ITU-R M.1677-1 国际摩斯电码表(26 字母 + 10 数字 + 18 个常用标点,共 54 个码位);字母之间以单个空格分隔、单词之间以「 / 」分隔。表外字符不编码、不音译,跳过并回报;解码对齐同一张表,未知码组跳过。不处理发报时长、间隔与音频节奏。
代码示例
JavaScript 编码与解码的最小实现
const MAP = { A: '.-', S: '...', O: '---', '1': '.----', '?': '..--..' };
const REV = Object.fromEntries(Object.entries(MAP).map(([k, v]) => [v, k]));
const encode = (s) => s.toUpperCase().split(' ')
.map((w) => [...w].map((c) => MAP[c] || '').filter(Boolean).join(' '))
.join(' / ');
const decode = (s) => s.trim().split(/\s*\/\s*/)
.map((w) => w.split(/\s+/).map((c) => REV[c] || '?').join(''))
.join(' ');
encode('SOS'); // '... --- ...'
decode('... --- ...'); // 'SOS'
Shell 一次性转换示例
# Python 快速转换(表可按需扩充)
python3 - <<'PY'
MAP = {'S': '...', 'O': '---', '1': '.----'}
text = 'SOS 1'
print(' / '.join(' '.join(MAP.get(c, '') for c in w) for w in text.upper().split()))
PY
# 输出:... --- ... / .----
# 提示:正式通联需持证操作,并使用规定的频率与呼号规范
常见问题
摩斯电码里的 SOS 是什么?
SOS 是 ... --- ...,三点、三划、三点。它 1906 年由柏林国际无线电报公约定为国际求救信号,选它的原因是码型简单、节奏独特、在噪声里也容易辨认——并不是哪三个英文词的缩写。
点和划之间要不要加空格?
同一个字母内的点划必须连写、不能断开;字母之间必须用空格分隔,否则一串 ...---... 无法判断是 SOS 还是别的组合。单词之间按通行写法用「 / 」,本工具斜杠与竖线都能识别,换行也算单词分隔。
为什么中文不能转成摩斯电码?
国际摩斯电码只有 26 个字母、10 个数字和少量标点,本身没有汉字码位。中文电报另有一套四位数字的「中文电码」体系(如「中」= 0022),与本表不通用,所以本工具对中文直接跳过并提示,而不是音译成拼音再编码。
大小写会影响结果吗?
不会。摩斯电码没有大小写之分,本工具统一按大写处理,HELLO 与 hello 得到完全相同的码串。
粘贴进去的码里混着 · 和 — 怎么办?
可以直接粘。本工具会把「·」「•」「․」归一化成点,把「—」「–」「−」归一化成划,再照常解码;空格数量多少也不影响结果。
解码时提示有未知码组,是哪里错了?
多半是点划写错或长度不对。标准表里最长的码组是 6 位(如句号 .-.-.-),出现 7 位以上必然找不到对应字符;这类码组会被跳过并列出来,其余部分照常解码。
摩斯电码现在还有人在用吗?
有。业余无线电爱好者(HAM)仍用它做弱信号通信,航空导航台与部分应急信标也用摩斯标识自己(比如台站呼号),国际通行的信标识别至今依赖点划节奏。
转换过程会上传我输入的内容吗?
不会。编码与解码都在浏览器本地完成,输入不经过服务器、不写访问日志,也不写入浏览器存储——本工具没有「计算历史」区块,因此刷新页面后内容即消失。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。