Mirror文本生成器

把一段文字按字符反序,再逐个替换成上下翻转或左右翻转的镜像字形,得到可以直接复制的镜像文本。默认示例把 Hello 2026 变成 9ᄅ0ᄅ ollǝH,全过程在浏览器本地完成,同样的输入永远得到同样的输出。

最多 5000 个字符;换行、空格与标点都会保留

字符数 10;被替换 4;覆盖率 40.0%

已生成:其中 1 个字符(空格、中文、emoji 等)无镜像字形,已原样保留。

使用方法

  1. 在「原文本」框里填或者粘贴要处理的文字,默认示例是 Hello 2026;单次最多 5000 个字符,留空会得到明确提示而不是空白结果。
  2. 点「生成镜像」或在文本框里按 Ctrl 加 Enter,结果区立刻出现镜像文本,下面一行同步给出字符数、被替换字符数与覆盖率。
  3. 点「复制结果」把镜像文本复制到剪贴板。如果原文里有中文、空格或 emoji,提示行会说明有几个字符没有镜像字形、已原样保留。
  4. 想核对单个字符到底变成什么,翻到「对照表」一节:62 行字符映射表默认显示前 12 行,点「加载更多」展开全部,也可以导出 CSV 或按 TSV 复制。
  5. 点「载入示例」把输入框还原成默认的 Hello 2026,用来检查结果区与本文档里的示例是否一致,也是排查字体显示问题的最快办法。

这个工具能解决什么问题

第一类需求是社交平台上的花式排版。镜像文字在昵称、签名、评论区里很显眼,但手动一个字一个字去找对应字符既慢又容易漏。Mirror文本生成器一次处理整段文字,结果可以直接复制粘贴,不需要安装任何输入法或插件。

第二类需求是搞清楚「倒过来」到底做了什么。很多人以为镜像文本是把字翻转过来,实际上它做的是两件独立的事:先把字符顺序倒过来,再把每个字符换成形状相近的另一个字符。本页把这两步分开呈现,你能清楚看到哪一步产生了哪个变化。

第三类需求是批量处理前的试算。要在脚本里批量转换之前,先拿一小段样本验证规则是否可复现:同样的输入在本页永远得到同样的输出,没有随机成分,因此可以放心把规则搬到自己的代码里。

本页不做这些事:不做真正的图形镜像渲染(那需要画布或 CSS 变换,不是字符替换);不做大小写转换、全角半角转换或拼音转换;也不保证结果在所有设备上都能正常显示——镜像字形依赖字体是否收录了对应码位。

原理与规则说明

Mirror文本生成器的算法只有两步,且顺序固定。第一步把输入按 Unicode 码点拆成字符数组并整体反序;第二步遍历反序后的数组,逐个字符在镜像表里查替换,表里没有的字符原样保留。用式子表达就是 out = reverse(chars).map(c => T[c] || c).join(''),其中 T 是那张 62 项的镜像表。

为什么按码点而不是按 16 位码元。JavaScript 字符串内部按 UTF-16 存储,emoji 与部分生僻字由两个码元(代理对)组成。直接按索引反序会把代理对拆开,产生乱码;按码点遍历后,一个 emoji 始终是一个整体,反序后仍然完整,只是没有镜像字形、原样保留。

为什么有些字符看起来没变。镜像表里有一批字符的镜像字形就是它自己:大写字母 H、I、N、O、S、X、Z,小写字母 l、o、s、x、z,以及数字 0 和 8。它们在表里确实存在,只是映射前后相同,所以既计入字符数也不计入「被替换」数——这就是默认示例里 Hello 2026 只有 4 个字符被替换的原因。

镜像只是形似。这些字符是 Unicode 里本来就有的独立字形,长得像某个字母翻转后的样子,但编码完全不同,也不携带「这是镜像」的信息。因此复制到不支持这些码位的字体里会显示成方框或问号,搜索引擎与读屏软件也会把它们当成完全不同的字符来处理。

结果是确定的。整个流程没有任何随机数,也不依赖时间、语言或设备;同一段文本在本页生成的镜像文本永远逐字相同,便于比对与复用。

完整示例(默认输入实测)

示例条件与页面默认值完全一致,原文本是 Hello 2026(共 10 个字符)。逐步核对:

注意数字的变化最容易被忽略:6 与 9 互为镜像,所以反序之后 6 会变成 9;2 用的是一个独立的镜像字符 ᄅ,它看起来像反过来的 2,但编码与普通的 2 完全不同。把结果粘回输入框再生成一次,会得到另一个方向的结果,可以用来验证规则是否对称。

对照表

第一张表是 8 组常见输入与输出,全部直接显示;数值列为字符数、被替换字符数与覆盖率:

原文本镜像结果字符数被替换覆盖率
Hello 20269ᄅ0ᄅ ollǝH10440.0%
abcɔqɐ33100.0%
ABCƆᗺⱯ33100.0%
123ƐᄅƖ33100.0%
WowʍoM3266.7%
Mirror 20269ᄅ0ᄅ ɹoɹɹᴉW11872.7%
你好好你200.0%
Hello, World!!plɹoM ,ollǝH13430.8%

第二张表是完整的字符映射表,覆盖 26 个大写字母、26 个小写字母与 10 个数字,共 62 行:默认显示前 12 行,点「加载更多」展开全部,也可整表导出 CSV 或按 TSV 复制。

原字符镜像字符
AⱯ
Bᗺ
CƆ
Dᗡ
EƎ
FℲ
G⅁
HH
II
Jſ
Kʞ
L⅃
MW
NN
OO
PԀ
QΌ
Rᴚ
SS
T⊥
U∩
VΛ
WM
XX
Y⅄
ZZ
aɐ
bq
cɔ
dp
eǝ
fɟ
gƃ
hɥ
iᴉ
jɾ
kʞ
ll
mɯ
nu
oo
pd
qb
rɹ
ss
tʇ
un
vʌ
wʍ
xx
yʎ
zz
00
1Ɩ
2ᄅ
3Ɛ
4ㄣ
5ϛ
69
7ㄥ
88
96

映射表是固定的字符对应关系,不随上方输入变化;上方结果区才是你自己的实算结果。

输入范围、边界与精度说明

常见问题

为什么结果是倒过来的,而不是把字翻转?

因为镜像文本做的是字符级替换:先把整段文字反序,再把每个字符换成形状相近的另一个字符。真正的图形翻转需要画布或 CSS 变换,本页只处理字符,所以顺序必然是反的。

为什么有些字母完全没变?

大写 H、I、N、O、S、X、Z,小写 l、o、s、x、z,以及数字 0 与 8,它们的镜像字形就是自己。它们计入字符数但不计入被替换数,所以覆盖率不会因为这些字符而升高。

复制到别的地方显示成方框怎么办?

说明目标应用的字体没有收录这些码位。这是字体缺字,不是生成错误;换一个字体或平台再试,重要内容建议只把镜像文本当作装饰,不要承载关键信息。

中文能镜像吗?

不能。镜像表只覆盖英文字母与数字,汉字没有对应的镜像字形,会原样保留并参与反序。输入「你好」得到的是「好你」,顺序变了、字形没变。

超过 5000 个字符会怎样?

提示行会给出实际字符数与 5000 的上限,同时不清空你输入的原文,方便你删减后重新生成;不会截断后返回一个看似正常的不完整结果。

结果会不会每次都不一样?

不会。整个流程没有任何随机成分,也不依赖时间与设备;同一段文本生成的镜像文本永远逐字相同,可以放心用于比对和批量脚本验证。

换行和空格怎么处理?

它们不在镜像表里,因此原样保留,但会随整体一起反序。多行文本的行序也会被倒过来,处理诗歌或代码注释时要留意这一点。

结果会被上传吗?

不会。所有处理只在你当前浏览器本地完成,页面不发起任何网络请求,也不写 Cookie 或 localStorage。打开开发者工具的 Network 面板连点几次生成,始终是空的。

相关工具