
本文目录
ABC123 和 ABC123 看起来很相似,但存储的是不同的 Unicode 字符。只接受普通拉丁字母和数字的表单,可能拒绝全角版本;电子表格比较这两个值时,也可能判定它们不相等。
中文输入法可以在中文文本中输入全角字母、数字或标点。这里需要处理的是字符串实际保存的字符,而不只是显示时使用的字体或缩放比例。
识别常见的全角半角配对
| 半角形式 | 全角形式 | 常见问题 |
|---|---|---|
A | A | 标识符匹配失败 |
1 | 1 | 数字字段不接受输入 |
, | , | 分隔符未被识别 |
( ) | ( ) | 搜索或解析结果不同 |
普通空格和表意文字空格在输入框中也可能看起来相似。开头或结尾的空格还会造成另一种不匹配。修改前应查看完整的字段值,尤其是商品编码、联系信息和导入记录。
只转换需要处理的字段
对于 ABC123 这样的商品标识符,转换拉丁字母和数字后会得到 ABC123。对于一段中文正文,把所有标点都改成半角却可能破坏原本的排版。数据输入字段和正式发表的句子,需要的处理方式并不相同。
全角半角转换工具可以分别选择字母、数字、支持的标点和空格。先选择造成不匹配的字符类别,再将结果与原文比较。
全角半角转换的范围
全角半角转换不会把简体中文变成繁体中文,也不会把不同文字系统中外观相近的字母变成同一个字符。例如,拉丁字母与某些相似的西里尔字母,需要另行辨别。
中文句号 。 并不是 ASCII 句点 . 对应的全角字符。中文引号、书名号等,也并非全部属于全角 ASCII 映射范围。不能认为转换一次就能消除所有标点差异。
比较转换前后的字段值
以示例商品编码 ABC123 为例:只转换字母,结果是 ABC123,数字仍然是全角;同时转换字母和数字,才会得到 ABC123。因此,即使结果看起来已经有所变化,仍可能不符合只接受普通字母和数字的要求。
如果编码前还有一个表意文字空格,例如 ABC123,只转换字母和数字会保留这个开头的空格。转换空格改变的是它的宽度,并不等于删除空格。如果接收字段也禁止开头出现空格,应按该字段的格式要求另外去除。
标识符中有意义的前导零应当保留。把 001234 转成 001234,不应再变成 1234。后一步是将内容按数值解释,并不是全角半角转换。在电子表格中,如果前导零有意义,应将整理后的标识符保存为文本。
区分标点与文件结构
中文正文中的逗号可以只是标点,CSV 文件中的 ASCII 逗号却可能是字段分隔符。如果直接把原始数据文件里的每个中文逗号都换成 ASCII 逗号,而字段又没有正确加引号,就可能改变文件的解析方式。应先转换选定字段的文本,再按文件格式正常的引号规则导出。
同样,句子中的全角冒号和网址里的冒号承担着不同作用。转换工具能够改变字符,却不会判断转换后的网址是否指向预期位置。链接和结构化字段应当在各自的使用场景中检查,不能把标点变窄就视为内容有效。
字符显示出来的宽度还受字体影响。放大或更换字体,不会把 A 变成 A。如果问题出在精确匹配,应检查或转换实际保存的文本;如果只是段落的视觉效果不理想,则未必需要修改字符本身。
批量导入前,先选择一小组包含字母、数字、标点和空格的样本,再考虑替换整列。样本中应包括一条已知能够匹配的记录、一条带前导零的记录,以及一条包含中文正文的记录。这样才能看清哪些类别需要转换,哪些应保留原样。
转换后,先将原始值和整理后的值并排保留,直到接收系统正确接受了目标记录。以后出现差异时,就可以直接找出哪个字符发生了变化,无需凭记忆恢复,也不必依赖可能无法还原全部原始选择的反向转换。
导入数据的整理顺序
- 保留原始列或文件。
- 找出具有明确格式要求的字段,例如数字编码。
- 在副本中转换必要的字符类别。
- 检查转换后的前导零、标点和空格。
- 重新测试匹配或校验,再替换实际使用的数据。
除非系统明确要求,否则不要对密码或参与签名的字符串进行规范化处理:改变一个字符,就改变了值。姓名和标识符也应保留原始副本,以便恢复原来的写法。
如果提交内容还有长度限制,可再用字数统计工具检查转换后的文本。全角半角转换可能改变显示宽度,但不会因此减少字符数量。
评论
加载中…
暂无评论。