運転免許証の文字について

運転免許証ICチップ内の氏名や住所情報はJIS X 0208で記録されています。

JIS X 0208で規定されない文字(JIS漢字第三水準・第四水準など)は外字(画像)として記録されます。

具体的には以下の情報に外字を含むことがあります。

  • 券面氏名
  • 券面住所
  • 本籍
  • 通称名
  • 券面裏の追記事項(新住所・新氏名・新本籍など)

LibJeID 20200228 以降、これらの外字を適切に扱うためのDLStringクラスを提供しています。 DLStringはこれらの外字を含む文字列をテキスト形式・JSON形式・HTML形式でフォーマットします。

記載情報を送信、記録するようなケースではJSON形式、アプリなどのUIに表示するような場合HTML形式を使用することを想定しています。

DLString#toString()の仕様

例) 山﨑 太朗(「﨑」と「朗」が外字)

山【※1】 太【※2】

というテキストで表現します。欠字の場合は【※欠】となります。

DLString#toJSON()の仕様

DLString#toJSON()は以下のようなJSONフォーマットを返します。

例) 山﨑 太朗(「﨑」と「朗」が外字)

[
  {"type": "text/plain", "value": "山"},
  {"type": "image/png", "value": "iVBORw0KGgoAAAA..."}, //「﨑」のPNG画像をbase64エンコードしたもの
  {"type": "text/plain", "value": " "}, // 氏名の区切りは全角スペース
  {"type": "text/plain", "value": "太"},
  {"type": "image/png", "value": "iVBORw0KGgoAAAA..."}, //「朗」のPNG画像をbase64エンコードしたもの
]

※実際のJSON文字列は最小化されており、改行やスペースは含まれません。

※旧API(DriverLicenseEntries#getNameJson()など)はテキストをUnicodeエスケープしていましたが、DLString#toJSON()はUnicodeエスケープを行わないよう仕様変更しています。

外字は最大7つまで記録されます。 氏名や住所にJIS X 0208に含まれない文字が8文字以上使われ、 外字として記録されていない場合、その文字は欠字として扱われます。

例) 山﨑 太朗(「﨑」が外字、「朗」が欠字)

[
  {"type": "text/plain", "value": "山"},
  {"type": "image/png", "value": "iVBORw0KGgoAAAA..."}, //「﨑」のPNG画像をbase64エンコードしたもの
  {"type": "text/plain", "value": " "},
  {"type": "text/plain", "value": "太"},
  {"type": "image/x-missing"}, // 欠字
]

DLString#toHTML()

外字を含む文字列をHTMLで表現します。画像はData URI形式でHTMLに埋め込まれます。

ブラウザなどのWebUIで表示する際はフロントエンドでJSONデータをJavaScriptでHTMLに変換する方法もご検討ください。

参考) dlstring.js