悦省yueser.com

← 全部指南

全角转半角:数字识别与代码清理

从日文输入法或旧文档复制的数字看起来正常,程序却认不出来。全角和半角是两组不同的码位,只有转成半角才会被当作数字处理。

打开工具:全角转半角

什么场景真的需要它

最典型的是数字。全角「123」看起来和 123 一模一样,但码位不同,表格软件会把它当文本,脚本解析会报错,搜索也匹配不上。从日文环境复制的电话号码、金额、商品编号经常是这种状态。

代码和命令行也一样。全角空格、全角括号、全角分号粘进代码会直接语法错误,肉眼却很难发现。整理从旧文档、PDF 或聊天记录里复制的英文和符号时,也常要先转半角,尤其是从 PDF 复制的段落。

转换范围与副作用

映射的是一段连续码位:全角 ASCII 变体(U+FF01–U+FF5E)统一减去 0xFEE0 得到对应半角,表意空格 U+3000 变成普通空格。汉字、假名和半角片假名不在这段区间,保持原样。

这段区间里的全角标点也会一起变:全角逗号 U+FF0C、全角句点 U+FF0E、感叹号、问号、括号都会变成 ASCII。日文的 、和 。位于 U+3001 和 U+3002,不受影响。全角空格变半角后,段首缩进也会消失。

替代方案与不该用的地方

只关心数字时,表格软件的查找替换或 VALUE 函数就够;只想让输入方式一致,切换输入法直接打半角更快。日文正文通常只要求数字和字母半角、标点保持全角,这时整段转换反而过头。

反方向的需求,也就是表单要求全角输入,用半角转全角。两个方向都是机械的码位映射,不读语境,所以处理代码、密码、网址之前一定先备份,转换后再抽查几个关键字符,确认数字和括号都正确。

常见问题

为什么全角数字程序识别不了?

因为全角数字和半角数字是不同的 Unicode 码位,外观相似但值不同。多数解析器只接受半角的 0-9,遇到全角会当作普通字符或直接报错。

转换后日文的标点也变了怎么办?

全角逗号、句点、感叹号、问号在转换区间内,会变成 ASCII;、和 。不在区间内,保持原样。若排版需要全角标点,请在转换后手动改回或只对数字部分转换。

汉字和假名会受影响吗?

不会。转换只覆盖 U+FF01 到 U+FF5E 的全角 ASCII 变体以及 U+3000 空格,汉字、平假名、片假名都原样保留。

相关工具:全角转半角