Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

おそらく意図しない潜在的な不具合: layers_txt/layers6.txt から src で参照される layers_alos2_vol_nishinoshima.txt が UTF-8 BOM 文字コードを採用している #100

Closed
usagi opened this issue Sep 10, 2020 · 2 comments

Comments

@usagi
Copy link

usagi commented Sep 10, 2020

不具合の位置

↑ここから src で参照が定義されている https://maps.gsi.go.jp/sar/layers_txt/layers_alos2_vol_nishinoshima.txt に問題があります。

note: 但し、問題のあるファイル layers_alos2_vol_nishinoshima.txt は地理院地図として配置済みの状態ですが gsimaps のソースコードには存在しません。 commit 漏れであればそちらもご対応下さい。

不具合の内容

このファイルの先頭には 0xEE 0xBB 0xBF からなる UTF-8 文字コードに対する BOM が埋め込まれています。

00000000  ef bb bf 09 7b 0d 0a 20  20 09 22 6c 61 79 65 72  |....{..  ."layer|
00000010  73 22 3a 20 5b 0d 0a 20  20 20 20 20 20 20 20 20  |s": [..         |
00000020  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000030  20 20 20 7b 0d 0a 20 20  20 20 20 20 20 20 20 20  |   {..          |
00000040  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000050  20 20 22 74 79 70 65 22  3a 20 22 4c 61 79 65 72  |  "type": "Layer|
00000060  22 2c 0d 0a 20 20 20 20  20 20 20 20 20 20 20 20  |",..            |
00000070  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000080  22 69 64 22 3a 20 22 75  72 67 65 6e 74 5f 76 6f  |"id": "urgent_vo|
00000090  6c 63 61 6e 6f 5f 6e 69  73 68 69 6e 6f 73 68 69  |lcano_nishinoshi|

厳密には https://github.com/gsi-cyberjapan/layers-dot-txt-spec/blob/master/specifications.md で UTF-8N とは定義されていませんし、この仕様で定義される JSON (EMCA-404, RFC8259) 規格でも UTF-8 の採用について BOM の有無には触れられていないため、現在は"潜在的な不具合"としました。

一般に UTF-8 に積極的に BOM を付ける事は推奨されていません。UTF-8 文字コードの実情として JSON = UTF-8N として処理を試みようとするライブラリーも存在します。そのため、 layers.txt に UTF-8N (現在確認済みの他の多くの layers.txt 系ファイル群で採用) と UTF-8 BOM が混在する状況はこうした低レベルの文字コード処理に一定の前提知識を持たない場合、原因の特定が難しい不具合の温床となる可能性があります。)

期待される対応

  1. 問題のファイルの文字コードを UTF-8N に変更し、 layers.txt の仕様にも "JSON ( UTF-8N; BOM なし ) 形式" のように定義し仕様の安全も確保します (推奨)
  2. 現行の仕様に違反しているわけではなく問題はないと判断し以降事例として現状の混在のまま運用する (非推奨)

  • 対象のファイルは github のソースには存在しないため PR できないため、問題のファイルへのアクセス権限のある方、対応をお願いします。
  • 現在の他の layers.txt ファイル群が UTF-8N でほとんど統一されている事実からも、おそらく暗黙的に layers.txt の仕様としても UTF-8N を想定していて、この問題のファイルはたまたま何らかの変換処理か操作上のミスから BOM 付きになってしまった状態ではないかと推量し、不具合よりの報告として Issue 化しました。地理院地図を使用するアプリを作る側としても layers.txt が BOM あり/なし混在の仕様では実装に余剰な付帯的コストが必須となってしまう事、 UTF-8 にはそもそも BOM は不要で一般的にも推奨されてはいない事など鑑み、対応(1)で Issue が解決される事を望んでいます。よろしくお願いいたします。
@johofukyu
Copy link
Member

今回いただいたご指摘を踏まえ、
https://maps.gsi.go.jp/sar/layers_txt/layers_alos2_vol_nishinoshima.txt
について、ファイルの文字コードをUTF-8Nに変更しました。

このたびは有用なご指摘をいただきありがとうございました。
どうぞよろしくお願いします。

@usagi
Copy link
Author

usagi commented Sep 11, 2020

image

ありがとうございます。

@usagi usagi closed this as completed Sep 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants