知識マップ: Windowsの文字コードと改行コード - 文字化けとCRLF/LFの基本
記事「Windowsの文字コードと改行コード - 文字化けとCRLF/LFの基本」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
Windowsのテキストはバイト列・文字コード・改行コード・BOMという別々の軸の組み合わせで成り立ち、UTF-8やUTF-16LEはUnicodeの符号点をバイト列にする文字コードである一方、CP932は日本語Windows独自のレガシーコードページで両者は前提を取り違えると文字化けを起こす。BOMはUTF-16のバイト順を示す目印であると同時に、UTF-8では「UTF-8である」というシグネチャとして使われ、Windows PowerShell 5.1は非ASCII文字を含むスクリプトを正しく読むためにBOMを必要とする。改行コードはCRLFとLFのどちらかで文字コードとは別問題であり、リポジトリ単位の扱いは.gitattributesで固定できるが、Gitは改行こそ変換しても文字コードは自動で正してくれない。文字化けは正しい文字コードで開き直せば戻ることが多いが、誤読した内容をそのまま保存すると元のバイト列が失われ、表示崩れではなく取り返しのつかないデータ破損になる。
flowchart LR
accTitle: Windowsの文字コードと改行コードの知識マップ
accDescr: UnicodeとUTF-8・UTF-16LE・CP932の関係、BOMの役割、文字化けとデータ破損の違い、PowerShellの既定値やGitの改行変換が改行コードと文字コードそれぞれにどう効くかを示す図。
character_encoding["文字コード(キャラクターエンコーディング)"]
line_ending["改行コード"]
unicode["Unicode"]
utf_8["UTF-8"]
utf_16le["UTF-16LE"]
cp932["CP932"]
active_code_page["アクティブコードページ(ANSI/ACP)"]
bom["BOM(Byte Order Mark)"]
mojibake["文字化け"]
powershell_text_encoding["PowerShellの文字コード既定値"]
gitattributes[".gitattributes"]
reencoding_data_loss["誤読内容の再保存によるデータ破損"]
character_encoding -.->|"利用する"| unicode
character_encoding -->|"利用する"| utf_8
character_encoding -->|"利用する"| utf_16le
character_encoding -->|"利用する"| cp932
character_encoding -->|"利用する"| active_code_page
character_encoding -.->|"利用する"| bom
character_encoding -->|"原因になり得る"| mojibake
utf_8 -->|"実装を担う"| unicode
utf_16le -->|"実装を担う"| unicode
cp932 -.->|"両立しない"| utf_8
cp932 -.->|"原因になり得る"| mojibake
active_code_page -.->|"両立しない"| utf_8
utf_16le -.->|"両立しない"| active_code_page
bom -->|"利用する"| unicode
powershell_text_encoding -.->|"利用する"| utf_8
powershell_text_encoding -.->|"利用する"| active_code_page
powershell_text_encoding -.->|"前提とする"| bom
line_ending -.->|"で構成できる"| gitattributes
mojibake -.->|"原因になり得る"| reencoding_data_loss
概念間の関係(全19件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- 文字コード(キャラクターエンコーディング)はUnicodeを利用します。
- 文字コード(キャラクターエンコーディング)はUTF-8を利用します。
- 文字コード(キャラクターエンコーディング)はUTF-16LEを利用します。
- 文字コード(キャラクターエンコーディング)はCP932を利用します。
- 文字コード(キャラクターエンコーディング)はアクティブコードページ(ANSI/ACP)を利用します。
- 文字コード(キャラクターエンコーディング)はBOM(Byte Order Mark)を利用します。
- 文字コード(キャラクターエンコーディング)は文字化けの原因になることがあります。
- UTF-8はUnicodeの実装を担います。
- UTF-16LEはUnicodeの実装を担います。
- CP932はUTF-8と両立しません。
- CP932は文字化けの原因になることがあります。
- アクティブコードページ(ANSI/ACP)はUTF-8と両立しません。
- UTF-16LEはアクティブコードページ(ANSI/ACP)と両立しません。
- BOM(Byte Order Mark)はUnicodeを利用します。
- PowerShellの文字コード既定値はUTF-8を利用します。
- PowerShellの文字コード既定値はアクティブコードページ(ANSI/ACP)を利用します。
- PowerShellの文字コード既定値はBOM(Byte Order Mark)を前提とします。
- 改行コードは.gitattributesで構成できます。
- 文字化けは誤読内容の再保存によるデータ破損の原因になることがあります。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。