本文要点

  • 日文国内地址从邮编和都道府县逐步写到房间
  • 英文或拉丁字母写法常将收件人和详细位置放在前面
  • 邮编是七位数字,常显示为 123-4567
  • 翻译、罗马字转换和地址验证是不同步骤
作者
Random Address Generator 编辑团队
审核
国际地址格式审核组
最近实质更新
核对日文与拉丁字母地址的相反顺序、七位邮编和国际标签字符限制。

两种顺序不是简单倒序

日文地址通常从大的地理层级逐步写向小的定位:邮编、都道府县、市区町村、町域与番地、楼宇和房间,最后是收件人。拉丁字母国际写法通常把收件人、房间和番地放到前面。

转换时不能对原始文本行执行 reverse()。应先将地址解析成都道府县、市区町村、街区番号和楼宇等有语义字段,再根据输出语言组合。

格式示例
Mika Tanaka2-4-1 Marunouchi, Chiyoda-kuTokyo 100-0005JAPAN

国际表单字段如何承载日本地址

通用表单可以把 Prefecture 映射到 address-level1,将市区町村映射到 address-level2,将町域与番号放入 Address Line 1,楼宇和房间放入 Address Line 2。但应保留未拆分的原始地址,方便核对和重新解析。

通用字段日本地址含义示例
postal-code七位邮编100-0005
address-level1都道府县Tokyo
address-level2市区町村Chiyoda-ku
address-line1町域、丁目、番地Marunouchi 2-4-1
address-line2楼宇名与房间Sample Building 501

七位邮编的输入与展示

日本邮编常用三位+连字符+四位格式显示。数据库可以保存归一化文本,但必须保留前导零,不要用整数类型。

表单可接受用户输入邮便记号“〒”,但保存前应将记号与邮编值分开。

function normalizeJapanPostcode(value) {
  const digits = value.replace(/[^0-9]/g, '');
  return digits.length === 7 ? `${digits.slice(0, 3)}-${digits.slice(3)}` : value.trim();
}

罗马字不是“无损英译”

字段可以同时保存日文原文与用户确认的拉丁字母写法。不要每次展示时临时自动音译,因为人名、楼宇名和地名可能存在多种惯用写法。

Japan Post 的国际标签服务对字符有具体要求。测试要分开“数据可以存储”和“特定标签渠道可以打印”两个结果。

值得自动化的日本地址用例

测试集应同时包含日文原文、拉丁字母输出、空楼宇行以及长楼宇名。生成地址只测试数据结构,不表示具体番地真实存在。

  • 邮编前导零在 CSV 中保留
  • 全角数字输入有明确的处理策略
  • 日文和拉丁字母版本分开存储
  • 楼宇名缺失时 Address Line 2 为空
  • 打印标签不静默截断房间号

用一条地址审核两种输出顺序

审核时使用同一条结构化记录分别生成日文国内版和拉丁字母国际版。如果两个版本需要两条完全无关的原始字符串,就无法确认房间、楼宇和番地是否在转换中丢失。正确做法是比较各语义组件是否恰好出现一次,然后再审查当地顺序。

接下来在表单中分别输入带连字符、不带连字符和带邮便记号的邮编,确认三者生成相同归一化值但原始值仍可追溯。最后测试打印渠道的字符限制:数据库能存储日文不代表国际标签渠道一定能正确打印。

  • 从同一结构化记录生成两种顺序
  • 断言每个地址组件不丢失也不重复
  • 邮编的多种输入归一到同一显示值
  • 在实际打印渠道中验证字符支持

常见问题

日本地址的英文顺序是否与日文相反?

通常是。日文从大区域写到详细位置,拉丁字母国际写法常从收件人和详细位置写向国家。

邮编里的连字符要保存吗?

可以保存标准化的 123-4567 形式,或分开保存纯数字与展示值,但不能丢失前导零。

自动音译后可以删除日文原文吗?

不建议。音译可能有多种写法,保留原文才能进行后续核对。

来源与进一步阅读

  1. Japan Post:国际标签可用语言与字符
  2. MDN:日本地址 autocomplete 映射