简介
在计算机字符被设计时,西方字符,例如拉丁字母、符号和数字都被归位到了「1字节」所能表示的「256」个空间中。随着计算机向全世界的普及和发展,在东亚地区(中、日、韩),由于这些国家的字符太多,所以必须使用「2个字节」来编码使得能够容纳「65536」个字符。
简单地讲,全角字符占用2个字节位置,半角字符(Half-width characters)占用1个字节位置。
原理
全角字符unicode编码从65281~65374,半角字符unicode编码从33~126,全角空格为12288,半角空格为32,其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
实现
// 全角转半角 func DbcToSbc(s string) string { var strLst []string for _, i := range s { insideCode := i if insideCode == 12288 { insideCode = 32 } else { insideCode -= 65248 } if insideCode < 32 || insideCode > 126 { strLst = append(strLst, string(i)) } else { strLst = append(strLst, string(insideCode)) } } return strings.Join(strLst, "") }