菜单

国际地址格式:线序、字段与本地文字

国际地址格式的差异集中在三处:地址行的书写顺序、行政区字段的层级划分,以及本地文字与罗马化的取舍。本文用对照方式讲清这三处差异,并说明为什么线序是显示问题而不是数据问题。

发布于

  • 国际地址
  • 地址格式

国际地址格式的麻烦往往在你做第二个国家的表单时才出现:第一个国家的写法看起来天经地义,第二国家的用户却抱怨地址栏不够用。问题通常不在字段数量,而在三处约定——地址行的先后顺序、行政区字段代表哪一级、以及到底该写本地文字还是罗马化拼写。读完这篇你能判断自己的表单在哪一处写死了,以及需要放开到哪一步。

地址线序:从大到小与从小到大

东亚多数地方的书写习惯是从大到小:先写国家或大区域,再写城市、街道,最后才是门牌和房间号。中国、日本、韩国都归在这一类。欧美多数地方相反,从小写到大:门牌号与街道名在最前,然后是城市、行政区,最后写国家和邮编。

国际邮件还有一条传统约定:目的国写在最后一行。这条约定在跨国寄件和清关单据上仍然常见,而本地表单里的顺序则完全按当地习惯排列。两者并不矛盾,因为服务的读者不同。

需要特别注意,中文和日文的地址常常不加分隔符号,门牌信息直接跟在路名后面;而欧洲语言普遍用空格把词分开。同一个字段在不同语言下看起来的长度能差出两倍,这也是地址行长度限制需要按国家调整的原因。

线序还会影响用户复制粘贴的行为。用户从别处复制来的地址通常已经按本地习惯排好,粘进表单后如果字段顺序与习惯相反,很多人会整段贴进第一个输入框,剩下的字段空着。这不是用户操作失误,而是界面顺序与他的预期不一致。把最长的那个字段放在第一行、并且允许整段粘贴后再拆分,比要求用户逐格填写更符合实际。

省、都道府县、联邦州与酋长国是同一级吗?

不是。各国行政区的层级深浅与命名完全不同,把它们都翻译成同一个词会在数据里埋下麻烦。日本使用都道府县,中国使用省与自治区,美国使用州,德国使用联邦州,阿联酋使用酋长国,法国的划分又与这些都不一样。

这些差异会直接影响表单设计。如果只准备了一个省份字段,遇到两层行政区的国家就装不下;如果准备了两个字段却遇到只有一级的国家,就会多出一个永远为空的输入框。常见的折中做法是把第二级行政区做成选填,并且只在选中需要它的国家时展示。

比字段数量更容易出错的是字段的必填状态。同一层级在有的国家是必填,在有的国家可以留空,比如城市与行政区的关系在各地并不一致。把必填规则写死在一个全局配置里,最终一定会出现某国用户无法提交、或者另一国用户被迫编造内容的情况。

该写本地文字还是罗马化拼写

两种写法都有使用场合,取决于这份地址要交给谁。给本国邮政系统看的地址,用本地文字最可靠;给国际运输、海关或者看不懂本地文字的客服看的地址,罗马化拼写更方便。很多地方对国际邮件的要求是本国文字加罗马化并行,或者至少在目的国一行用大写字母写清楚国名。

在数据层里,更省事的做法是两条都留:一条存用户按当地习惯输入的原文,另一条存可选的拉丁转写。不要在保存时就把原文替换掉,因为转写规则在不同语言里有多种方案,改写过的地址再想还原会很困难。

显示顺序应该由数据决定吗?

不应该。线序是显示问题,数据字段不该依赖显示顺序。如果数据库里存的是拼好的一整行地址,那么同一批数据想换个国家的排版方式就要重新解析,而解析字符串比读字段脆弱得多。

把地址拆成语义字段——街道行、城市、行政区、邮编、国家——之后,排版只是渲染时按国家选一个模板。这样做的另一个好处是校验和去重都变简单了:比较邮编与行政区是否匹配,只需要读字段,不需要先猜字符串里哪一段是邮编。这也是美国地址结构里那些固定位数的字段能被可靠校验的前提。

本地文字与拉丁转写在测试里怎么覆盖

测试数据里两种写法都该出现,而且不该共用一个样本。建议至少准备这些组合:完全本地文字的地址、完全拉丁转写的地址、两者都有的地址、以及混入少见字符的地址。这些样本只用于测试,不能投递,也不该被当成某个真实住处的写法来引用。

下表把三类差异整理在一起,方便对照检查自己的表单:

差异点 东亚常见做法 欧美常见做法
行序 从大到小 从小到大
分隔符 常不加分隔符 用空格分词
行政区层级 省与地市两级常见 一级行政区为主
文字 本地文字为主 拉丁字母为主

给开发者:把线序和字段解耦

第一,一个字段只承载一个语义。街道、城市、行政区、邮编、国家各自独立,不要用一个大字段装下整行地址,也不要让省份字段在有需要时装入城市名。

第二,不要把所有国家的行政区都命名为州。字段名可以统一,但界面标签和取值来源应当按国家切换;取值的编码方案见ISO 国家代码与行政区代码。

第三,线序写进模板而不是写进数据。按国家选择模板,模板只管哪些字段在第几行、谁和谁同行。

第四,字段长度上限按最宽的情况设置。中文地址与德语的复合路名都会把街道行拉得很长,上限设得太紧会让合法输入被截断。

第五,准备跨国家样本集时,至少覆盖一种从大到小的线序、一种从小到大的线序、一种无邮编的国家、以及一种字母数字混合的邮编。想直接比对不同国家的真实排版,可以对照本站日本这类东亚线序的国家页看。

下一步

如果你的表单正在支持第二个国家,先去随机地址生成器把两三个国家的地址各生成几条,贴在真实输入框里走一遍提交流程,看字段够不够用、哪一行被截断。线序相关问题往往在这一步就暴露,比等到用户投诉再改要省事。跨国家字段差异还有一份清单见收货地址表单的测试用例。

继续阅读

随机地址生成器相关文章