如何让Telegram Bot发送的Unicode方框字符保持等宽显示?
解决Telegram Bot发送Unicode井字棋错位问题
问题核心是Telegram默认字体非等宽,不同Unicode字符(方框线、半角X/O/点)的显示宽度不一致,导致排版错位。以下是几种可行的解决方法:
- 用代码块包裹内容:Telegram对代码块会强制使用等宽字体,所有字符宽度统一。将井字棋文本放在三重反引号中发送:
┌─────┬─────┬─────┐ │· · ·│· · ·│· · ·│ │X X X│X X X│X X X│ │· · ·│· · ·│· · ·│ ├─────┼─────┼─────┤ │X X X│X X X│X X X│ │X X X│X X X│X X X│ │· · ·│· · ·│· · ·│ ├─────┼─────┼─────┤ │X X X│X X X│X X X│ │· · ·│· · ·│· · ·│ │O O O│O O O│O O O│ └─────┴─────┴─────┘
- 替换为全角字符:把半角的
X、O、·换成对应的全角版本X、O、・,全角字符在Telegram默认字体中宽度一致,能和方框线对齐:
┌─────┬─────┬─────┐ │・・・│・・・│・・・│ │XXX│XXX│XXX│ │・・・│・・・│・・・│ ├─────┼─────┼─────┤ │XXX│XXX│XXX│ │XXX│XXX│XXX│ │・・・│・・・│・・・│ ├─────┼─────┼─────┤ │XXX│XXX│XXX│ │・・・│・・・│・・・│ │OOO│OOO│OOO│ └─────┴─────┴─────┘
- 单反引号包裹单行:如果不想用整块代码,也可以用单个反引号包裹每一行文本,同样会触发等宽字体渲染,但代码块的方式更简洁统一。
内容的提问来源于stack exchange,提问作者Fima
相关产品推荐
相关产品推荐

