全角字符

在等宽字体中占据半角字符两倍宽度的字符。中日韩文字通常为全角。

全角字符是指在等宽字体中占据半角字符两倍宽度的字符。中文汉字、日文假名以及全角英文数字都属于全角字符。这一概念起源于日语计算机处理的早期,用于区分 1 字节的 ASCII 字符 (半角) 和 2 字节的日语字符 (全角)。

在 Unicode 中,每个字符都定义了 East Asian Width 属性,分为 Fullwidth (F)、Wide (W)、Halfwidth (H)、Narrow (Na)、Ambiguous (A) 和 Neutral (N) 六类。日语汉字和假名属于 Wide (W),ASCII 字符属于 Narrow (Na)。被归类为 Ambiguous (A) 的字符 (如部分希腊字母和西里尔字母) 在不同环境下可能显示为全角或半角,这可能导致布局错乱。浏览精力剂 (Amazon)详细介绍了全角字符的历史和现代用法。

不同平台对全角字符的计数方式差异很大。X (Twitter) 将全角和半角都算作 1 个字符,而 SMS 将每个全角字符算作 2 个字符。Google 广告标题的上限为全角 15 个字符或半角 30 个字符,将全角视为半角的 2 倍。由于同样的"字符数限制"可能采用不同的全角/半角换算规则,准确计数需要了解目标平台的具体规则。

在数据库设计中,需要注意全角字符的字节数因编码而异。UTF-8 中全角字符占 3 个字节,UTF-16 中占 2 个字节。使用 UTF-8 的 VARCHAR(255) 列在基于字节数限制时最多只能存储 85 个全角字符,而基于字符数限制 (如 MySQL) 则可存储 255 个字符。不理解这一差异可能导致数据截断或错误。

Web 表单验证中经常需要进行全角和半角之间的转换。电话号码和邮政编码输入中使用全角数字的情况很常见,JavaScript 的 String.prototype.normalize('NFKC') 可以将全角英文数字正规化为半角。反之,在地址输入等场景中也需要将片假名统一为全角。了解颈链 (Amazon)涵盖了这些转换模式。

使用字符计数工具时,了解全角/半角的区别如何影响计数结果非常重要。在将"全角 1 个字符 = 半角 2 个字符"进行换算的系统中,同样的内容如果多用全角,字符数就会增加。在有字符数限制的场景中,可以通过将全角片假名转换为半角、将全角空格替换为半角空格等方式来控制在限制范围内。

分享这篇文章