中文输入法打出来的","和英文键盘打出来的","看起来相似,实际是两个不同的字符——这就是全角和半角的区别,根源来自早期东亚计算机排版对"字符该占多宽"的历史设计。
"全角"和"半角"最初是为了解决中文字符和英文/数字字符的排版对齐问题:一个汉字通常需要两个英文字符的宽度才能显示得协调美观,早期的东亚字符编码系统(比如日本的 JIS、中国的 GB 系列)为标点符号、数字、字母都设计了两套版本——半角字符宽度和普通英文字符一样窄,全角字符宽度和一个汉字相当(大致是半角的两倍宽)。这样在混排中英文和数字时,可以选择让标点符号、数字跟汉字的宽度保持一致(全角),或者跟纯英文文本习惯保持一致(半角)。
常见的全角/半角对照:全角的",。!?"(中文标点习惯)对应半角的 , . ! ?(英文标点习惯),全角数字 "0123" 对应半角数字 0123,全角空格(占一个汉字宽度)对应半角空格(占半个字符宽度,也就是普通空格)。
全半角混用是中文文本排版里一类常见但容易被忽视的问题:
U+3000),和半角空格(U+0020)在程序处理时是两个不同字符,如果代码只按半角空格做字符串分割或去除首尾空白,遇到全角空格往往会处理失败或留下多余空白全角半角转换工具通常允许分别控制要转换的字符范围(只转数字、只转字母、只转标点、只转空格),而不是"一键把所有全角都转成半角",原因是不同场景的排版需求并不一样:中文正文习惯保留全角标点(符合中文排版美观习惯),但同一段文本里的数字、英文单词又往往需要转成半角(方便程序解析、和国际通用格式一致)。如果不加区分地把所有全角字符都转成半角,可能会把本该保留中文排版风格的标点符号也转掉,破坏原本合理的排版效果——这也是为什么这类工具要提供"可分别开关字母/数字/标点符号/空格"的精细控制选项,而不是简单粗暴的全局替换。
在线工具:全角半角转换