書き出すテキストファイルの UTF-8 BOM と Markdown 継続行

一言まとめ

ブラウザから `.md` をダウンロードさせるときは先頭に UTF-8 BOM(`\uFEFF`)を付けると Windows のエディタでの Shift-JIS 誤判定を防げる。`.json` には付けない(RFC 8259 で BOM は本文ではなく、弾くパーサがある)。リスト項目内の改行は直後に 2 スペースを入れて継続行にする。

作成 · 更新 · #utf-8#bom#markdown#export
目次 5 sections
  1. 01 .md には BOM を付け、.json には付けない
  2. 02 リスト項目内の改行は継続行にする
  3. 03 出どころを 1 本にする
  4. 04 関連
  5. 05 更新履歴

調査時点: 2026-08。ある PWA の Markdown / JSON 書き出し機能を Windows 実機で確認したときに出た 2 つの問題と対処。

BOM(Byte Order Mark)は、テキストの先頭に置く Unicode の特殊な印。UTF-8 ではバイト順の指定は不要だが、UTF-8 であることを示す目印として使われる。

.md には BOM を付け、.json には付けない#

形式BOM理由
.md(人が開くテキスト)付ける(\uFEFF を先頭に)BOM 無し UTF-8 を Windows のエディタが Shift-JIS と誤判定し、日本語が化ける。先頭バイトが # 2026 のような ASCII だと特に判定を外しやすい
.json(機械が読む)付けないRFC 8259 上、BOM は本文の一部ではなく、BOM 付き JSON を弾くパーサがある

書き出し先が利用者自身の PC である以上、受け手のエディタ設定に頼るより送り手で付けるほうが短い。

リスト項目内の改行は継続行にする#

- 10:30 メモの 1 行目
メモの 2 行目(先頭に 2 スペース)

改行を含むメモをリスト項目に入れると、2 行目がリスト項目から抜けて別の段落になり、時刻との結びつきが切れる。改行の直後に 2 スペースを入れると Markdown 仕様どおりの継続行になり、HTML 変換でも LLM の読み取りでも「時刻に紐づくメモ」として残る。空行はそのまま残し、スペースだけの行は作らない。

出どころを 1 本にする#

BOM 付与とインデント処理は、ダウンロード用と他の出力(添付ファイル、プロンプト埋め込みなど)が同じ関数を通るようにする。経路ごとに書式がずれるのを防ぐ。

関連#

更新履歴#

  • 2026-08-30: 初版(ローカル調査ノート)
  • 2026-10-17: Wiki へ移植、概念ページとして再構成。冒頭に定義を追加

同じトピック — Web