菜单

各国地址格式对照:字段顺序、邮编形态与必填差异

各国地址格式对照显示字段顺序、邮编形态与必填项在各国的真实差异:日本从大到小写,英美从小到大写,有的国家根本没有邮编。本文讲清这些差异、跨境界面里地址行一到三的妥协代价,以及怎么设计一套可测试的多国字段模型。

发布于

  • 地址格式
  • 多国数据

各国地址格式对照是每个做跨境产品的团队迟早要面对的一张表:日本按从大到小写,英美按从小到大写,土耳其有省区街区三层,有的国家根本没有邮编,有的国家行政区是必填而有的国家连这个字段都不存在。把这些差异压进一套固定字段里,是表单设计中最常见的失真来源。这篇讲清顺序、邮编与必填项的差别,跨境界面的妥协方案及其代价,以及怎么为多国表单设计一套真正可测试的字段模型。

字段顺序为什么各国不同

顺序反映的是地址在这个国家的组织逻辑。英语国家从最精确的位置写起,门牌、街道、城市、州、邮编,逐层放大,这种写法的好处是投递员读到第一行就知道具体门牌。日本则相反,从都道府县写到市区町村、丁目番地、建筑物名,从最大的行政单位收窄到最小,这种顺序与地籍和街区编号体系有关。

土耳其的写法同样从省与区开始,经过街区与街道,最后才到门牌与门牌内号。拉美国家的地址往往有更多层级,除了行政区还可能包含地区与社区两三层。这些顺序上的差异不只是阅读习惯,它决定了当一段自由文本被解析时,解析器该从哪一端开始切分。

面向国际用户的表单如果依赖顺序推断,就会在大多数国家上出错。更稳妥的做法是明确告诉用户每一格填什么,字段顺序按当地习惯排列,而内部的存储顺序另有一套规范。

邮编的形态有多少种?

数字型最直观,美国是五位可加四位扩展,德国与法国是五位,日本是七位并常在中间加连字符。字母数字混合型也不少,英国与加拿大的邮编由字母和数字交替组成,荷兰则把字母放在数字后面,这些形态用数字字段一定存不下。

还有一类国家根本没有全国性邮编,或者邮编只覆盖部分区域。对这类市场,表单里的邮编字段必须是选填,而且不存在任何可以用来交叉校验的数据源。把邮编设成必填会让这些国家的用户无法提交。

长度的差异同样要注意。同一个国家的邮编可能有两种合法长度,中间可能带连字符,可能带前导零。因此邮编必须按字符串处理,并且在校验时接受一个长度范围而不是单一长度。跨境的邮编形态汇总见各国邮编格式。

哪些字段在有些国家根本不存在?

行政区就是最典型的一个。联邦制国家通常有省或州,城市型国家可能完全没有这一层。有的国家有两级行政区,有的只有一级。如果表单把「州」设为必填并给了固定的选项列表,那些没有这一层的市场就会被迫填一个虚假的值。

第二类是街道号码。有的国家门牌号紧跟街道名,有的国家门牌号写在街道名之前,还有的地区用街区加门牌的组合代替连续编号。第三类是单元号,公寓、楼层、门牌内号在不同语言里对应不同的概念,硬用一个标签去套所有国家会误导用户。

第四类是地区名的官方语言版本。同一个国家可能有多种官方语言,城市名有多个拼写。表单需要决定是只收一种,还是允许别名并做归一化。这类问题的处理方式见国家名称的匹配与别名。

地址行一到三为什么是妥协方案

为了让一套字段适配所有国家,最常见的做法是提供若干行自由文本,让用户按自己国家的习惯写。好处是实现简单、不用维护各国字段表;代价在数据被写入之后才显现出来。

第一,数据无法结构化。地址行里可能混着城市、邮编、行政区甚至国家名,后续做地域统计、按地区筛选或者计算运费时都没有可靠的字段可用。第二,去重与比对失效。同一个地址在不同用户手里会写成不同样子,系统无法识别它们是同一个地方。第三,自动补全与地理编码难以接入,因为输入无法拆成可查询的部件。

第四,也是最容易被忽略的一点:一旦上线并积累了数据,再想改成结构化字段,就面临历史数据的迁移问题,而自由文本的历史数据几乎无法完整还原。这个决定最好在第一天做对,而不是等数据攒起来再改。多国字段的深度差异见各国地址格式与国际格式。

怎么给多国表单设计字段模型?

核心思路是把国家放在最外层,其余字段的类型、顺序、必填性与校验规则都由它派生。国家决定有哪些字段、哪些必填、字段怎么排序、标签怎么写。这样一套模型只需要维护一份国家配置,而不需要在业务逻辑里到处写条件分支。

第二层是通用字段:收件人名、街道、门牌、单元号、城市、邮编、电话。这些字段在多数国家都存在,但必填性与格式不同。第三层是国家专属字段,比如省区、街区、都道府县,只在需要的国家出现。

校验策略要分层:单字段格式校验、跨字段一致性校验、外部数据校验。前两层可以本地完成,第三层依赖外部服务,不应当作为提交的硬门槛,否则服务抖动会让用户无法下单。相关取舍见地址校验与归一化,字段与国家代码的组织方式见国别与行政区代码。

同一个国家的格式会不会变?

会,而且变动并不罕见。邮政体系改革、行政区划调整、邮编规则重编、乃至官方语言政策变化,都会让地址格式在某一年前后不一样。旧的写法不会立刻失效,于是同一时刻你面对的是并存的多套规则,而不是一套可以写死的规则。

变动最容易被忽略的是行政层级。两个层级合并、一个层级改名、或者新增一级行政区,都会影响下拉选项与地址里那一行的取值。如果系统把层级名称硬编码在代码里,一次调整之后就会同时影响校验、展示与统计三条路径。

所以国别数据应当带一个时间维度:每条规则标注它适用的起止时间,以及它的来源。没有时间的规则表无法判断新旧,也无法在出现争议时回答「当时为什么这么写」。这一点在有多人维护同一份数据时尤其重要。

还有一种变动来自语言政策。官方更名之后,旧名称仍会在相当长的时间内被广泛使用,你的系统需要同时接受新旧写法,并在展示时统一采用当前名称。只认新名称会让一批真实用户无法提交,只认旧名称则会在几年后变成新的技术债。

跨境订单要按哪一国的格式校验?

按收货地址所在国,而不是按界面语言或者商家所在地。这一点看起来显然,实际项目里却经常被写错:账单地址与收货地址在同一个表单里,两套字段却共用了一份校验规则,于是其中一个必然错。

更细的一条是:跨境场景里地址的「国家」字段决定了后续全部规则,包括邮编是否必填、省州是选还是填、电话国家码是否必须与地址一致。这些派生规则应当在进入校验之前就根据国家确定下来,而不是在校验过程中逐步猜测。

测试要专门覆盖不一致的组合。收货地址在甲国而账单地址在乙国、界面语言为丙国语言、用户电话的国家码又属于丁国,这四者互不相同的情况在真实跨境业务里很常见,也是分支最少被走到的组合。

还有一类是海外领地与特殊区域。它们可能使用母国的国家码,却有独立的邮编与行政层级,也可能拥有自己的两位代码。样本里放一两条,可以验证你的层级数据在遇到「不属于任何常规分组」的地区时是正常降级还是直接报错。相关讨论见小地区与特殊代码。

国别数据该怎么维护

地址规则会变:行政区划调整、邮编新增、国家改名。维护一份能跟上变化的配置需要三件事。第一,记录每一条规则的来源与更新日期,这样当有人质疑某个字段时你能说清依据。第二,把规则与生成的数据分开管理,规则更新后同一批数据可以重新生成。第三,为每个国家准备一组最小回归样本,规则改动后先跑它。

来源方面,官方邮政与统计机构的公开资料是首选,其次是国际标准组织发布的行政区代码体系。国别数据的新鲜度问题见国别数据的新鲜度与来源,覆盖范围的检查清单见国别数据覆盖清单。

最后一条经验是把不常见的市场也纳入测试范围。小国与特殊地区往往没有邮编或者只有一级行政区,它们是最容易暴露设计缺陷的地方,而恰恰最容易被测试清单遗漏。相关的边界情况见小地区与特殊代码与跨境地址场景。

国家选择字段本身也要测

国家下拉框是所有跨境表单的第一个字段,也是最容易出错的地方。常见问题包括:选项里同时存在国家代码与国家全称,用户看到的和系统存的不是同一个值;搜索时按英文名匹配,输入本地语言的国家名搜不到;多语言站点切换语言后,选项没有跟着切换。

测试时应当准备三类输入:标准国家名、本地语言写法、以及常见的别名与拼写变体,观察系统是否能正确归一化到同一个代码。还要检查那些容易漏掉的市场是否在列表里,以及选中国家之后依赖字段是否按预期出现或消失。

这个字段还有一个连带影响:它通常是整个表单的联动起点,区划、货币、电话前缀、邮编规则都挂在它下面。它一旦取错值,后面所有字段的校验都会跟着错,而错误提示会指向那些无辜的字段。自动化用例里应当把国家选择作为每个多国场景的第一步单独断言一次。

地址数据要不要做完整性评分

值得做,但要克制。一个常见的做法是按国家定义必填字段集合,统计每条记录填了几项,得到一个覆盖率数字,用来判断样本集是不是偏了。它的用处是发现盲区:如果所有记录都没有行政区,说明你的样本来源本身缺这一层。

要小心的把它当成质量分。字段填满并不等于地址可用,一条所有格子都有值但邮编与城市不符的记录,比一条字段不全却自洽的记录更危险。所以评分只应当用来观察样本分布,真正的断言还是要落在字段之间的关系上。

要一批按各国规则生成、字段顺序与必填项都正确的对照数据,打开各国地址格式对照,选好国家与数量批量导出;单国的结构说明可以直接看美国地址生成器与土耳其地址生成器。上面这些记录都是合成出来的测试数据,格式与字段关系照着真实规则写,但不对应任何真实住户或真实地址,只能用于开发、测试与预发布环境,不能用于投递、开户或者冒充他人。

继续阅读

热门工具与用法文章