摩斯电码转换器:敲出点点横横,文字暗号都能秒译
这个工具把「文字 ↔ 摩斯电码」双向翻译做在一个页面里:输入一句中文或英文,马上得到对应的点点横横;反过来粘贴一段摩斯码,也能还原成文字。它还能用 Web Audio 把电码播出来,声音速度和音调都能调。先看成品,再讲怎么用华为云 CodeArts 码道 WebUI 一段话把它做出来、部署上线。
这个工具做什么
它把摩斯电码这件复古又实用的小事做成一个打开即用的转换器:
- 双向转换:中文 / 英文 / 数字 / 标点都能转成摩斯码,也能反着译回来。
- 中文无表可逆:中文不做一张巨大字表,而是用 Unicode 码点转数字摩斯,能译回去不丢字。
- 空格与标点自动处理:空格自动转
/分隔,常见标点显式编码。 - 声音播放:用 Web Audio 播放长短音,播放速度和音调都能调。
- 一键复制:转换结果一键复制,标点自动处理。
- 6 个常用示例:SOS、HELLO WORLD、你好世界、MAYDAY、数字、中英混合,点了就能看。
- 深色模式:深色 / 浅色切换,跟随系统或手动记忆。

码道开通(免费体验版)
开始之前,先免费开通码道体验版。不需要装任何软件,浏览器就能用:
https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwsf&sourcead=dmzntgwwbwz
开通后有三种使用方式:WebUI(浏览器对话)、TUI(终端命令行)和桌面 IDE(IDE 插件)。本文用 WebUI 版演示。
进入 AI 开发者空间
- 浏览器打开 https://devstation.developer.huaweicloud.com/aidevspace?utm_source=opcsfsq&utm_medium=wbwz
- 弹窗「请选择要进入的版本」→ 点击 体验版
- 首次使用会跳到华为云登录页,扫码登录一次,后续浏览器会话复用
- 弹窗「临时凭据自动配置」→ 点击 同意,沙箱自动创建
进入 AI 开发者空间主界面后,先等左侧菜单加载出来,再找到 CodeArts,点击它右侧的浏览器图标,打开码道 WebUI 对话窗口:

打开后码道 WebUI 会先和你打招呼,下方就是需求输入框:

小贴士:体验版沙箱 3 小时后自动重置,生成完记得把
index.html下载保存。
任务描述
在码道 WebUI 输入框粘贴以下需求,回车发送:
开发一个「摩斯电码转换器」单文件网页应用:支持中文和英文文本与摩斯电码双向转换,自动处理空格和标点;能用 Web Audio 播放摩斯电码声音,并调节播放速度与音调;支持一键复制转换结果、内置几个常用示例,并带深色模式。界面简洁清晰,所有代码写在一个 index.html 里。完成后用部署功能部署成可访问的网页应用,并告诉我访问地址。

这轮码道具体做了什么
不是复述通用 AI 能力,而是它在这次项目里的实际动作:
- 先探测空闲端口,过程中发现沙箱里的
PYTHONHOME/PYTHONPATH环境变量被污染,于是先unset再用干净的python3重新探测。 mkdir -p /workspace/morse-converter创建项目,把编码表、双向转换和 Web Audio 播放全部写进单文件index.html。- 最后落在 3003 端口起服务并自检,给出内部访问地址。
代码亮点
以下是 index.html 里值得关注的设计思路和实现细节。
1. 中文不建大表:Unicode 码点转数字摩斯
英文直接查 MORSE 表,中文这种表外字符则取字符的 Unicode 码点,把每一位数字映射成数字摩斯后拼接。这样方向可逆,不需要维护一张巨大中文字表:
function textToMorse(text) {
if (!text) return "";
const out = [];
for (const ch of text) {
if (ch === " ") { out.push("/"); continue; }
const up = ch.toUpperCase();
if (MORSE[up]) { out.push(MORSE[up]); continue; }
// 非 ASCII / 表外字符:用 Unicode 码点的每一位数字转数字摩斯后直接拼接
const code = ch.codePointAt(0);
const digits = String(code).split("");
const m = digits.map(d => MORSE[d]).join("");
out.push(m);
}
return out.join(" ");
}
2. 反向译码:先把「数字摩斯组」拼回码点
译码时如果一段长度能被 5 整除,就尝试每 5 位一组译成一个数字,再拼成 Unicode 码点还原汉字;只有每段都是合法数字摩斯且码点 >= 32 才算数,否则回退到普通表查询:
if (u.length % 5 === 0) {
let digits = "", ok = true;
for (let j = 0; j < u.length; j += 5) {
const five = u.substr(j, 5);
const d = REVERSE[five];
if (d === undefined || !/^[0-9]$/.test(d)) { ok = false; break; }
digits += d;
}
if (ok && digits.length >= 2) {
const code = parseInt(digits, 10);
if (code >= 32) { out.push(String.fromCodePoint(code)); continue; }
}
}
3. 全角 / 半角横线先归一
用户粘贴的摩斯码经常混用全角减号 −,译码前先用 normDash 统一成半角 -,避免「一样的码」被当成两套:
function normDash(s){ return s.replace(/−/g,"-"); }
直接下载试玩
本次生成的项目就是单文件 index.html,没有第三方依赖,把文件保存到本地后双击用浏览器打开即可运行。源码同步到公开 Demo Park 仓库:
- Demo Park 仓库:https://atomgit.com/deli007/demo_park
- 本案例目录:https://atomgit.com/deli007/demo_park/tree/main/codearts-morse-code-translator
总结
摩斯电码转换器把中英双向转换压进一个页面:英文直接查表,中文用 Unicode 码点转数字摩斯做到可逆,译码时按 5 位一组重组码点,normDash 先把全角横线归一;Web Audio 负责出声,速度和音调都能调。整个过程没有第三方依赖,纯前端跑通。后续可以再加 WPM 训练模式、摩斯码练习出题,或者导出 .wav 音频。
如果还没用过码道,可以免费开通体验版:https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwsf&sourcead=dmzntgwwbwz
- 点赞
- 收藏
- 关注作者
评论(0)