プログラマのための文字コード技術入門改訂新版

プログラマ ノ タメノ モジ コード ギジュツ ニュウモン

プログラマのための文字コード技術入門改訂新版の表紙
コンピュータサイエンス / アルゴリズム
著者:
矢野啓介(ヤノ, ケイスケ)
出版社:
技術評論社
出版日:
2019年01月
ISBN:
9784297102913
シリーズ:
WEB+DB PRESS plus
在庫:
在庫あり
4.67(4 件 / 楽天ブックス)
中級者向け
Unicode文字コードJIS 規格文字化けコード変換プログラミング基礎技術書文字列処理エンコーディングソフトウェア開発

なぜ注目されているか

言及数
465位
総合1119位 ↓ 62 ランクダウン 言及 7 件・うち記事 6 件を掲載
01120222023202420252026

書籍紹介

Unicode、JIS 規格の今、文字コードの原則、文字化けのメカニズム、コード変換の基礎。仕様 & 実装の骨格から見えてくる。長く役立つ「ベーシック」。進化する技術基盤。

技書の森解説

文字化けの原因を調べるとき、Shift_JIS や UTF-8 という名前は知っていても、どの段階で何が食い違ったのかを説明できずに止まってしまうことがあります。『プログラマのための文字コード技術入門 改訂新版』 (矢野啓介 著、技術評論社、WEB+DB PRESS plus、2018 年 12 月刊) は、ソフトウェアエンジニアをおもな対象に、文字コードの原理原則と歴史から Unicode、日本の文字コード規格、文字化けのメカニズム、コード変換、プログラミング言語での扱いまでをまとめた解説書です。版元は推奨読者として、ソフトウェアエンジニア、日本語情報処理を扱うアプリケーションの開発者、データフォーマットの設計にかかわる開発者を挙げています。

全 8 章の構成、文字の符号化の原則から落とし穴の対処まで

版元の概要によれば、前半で文字と文字コードの歴史を解きほぐしながら原理原則と主要な仕様の要点を解説し、後半で実装に近い話題へ進む構成です。目次では、第 1 章「文字とコンピュータ」と第 2 章「文字コードの変遷」で、文字集合と符号化文字集合、制御文字、ASCII から ISO/IEC 2022、JIS X 0208、Unicode と ISO/IEC 10646 の成立までをたどります。第 3 章「代表的な符号化文字集合」と第 4 章「代表的な文字符号化方式」は個々の規格の中身で、EUC-JP や UTF-32、サロゲートペアの節もここに含まれます。第 5 章「文字コードの変換と判別」、第 6 章「インターネットと文字コード」、第 7 章「プログラミング言語と文字コード」と続き、第 7 章は Java と Ruby を例に取ります。最後の第 8 章「はまりやすい落とし穴とその対処」は 16 進ダンプツール、文字化け、改行コード、「全角・半角」問題、円記号問題、波ダッシュ問題を扱い、巻末の Appendix で JIS X 0213 の符号化方式や Unicode の文字データベースを補います。

改訂新版で反映された規格の改正と Unicode の変化

改訂新版は、初版の骨格はそのままに 9 年間の変化を反映して全面的に加筆修正した版と案内されています。版元が挙げるおもな変更点には、2010 年の改正常用漢字表への対応、JIS X 0208 と JIS X 0213 の 2012 年改正への対応、ISO/IEC 10646 の UCS-4 の変更、Unicode に追加された変体仮名、Unicode 11 に基づく説明、初版の時点では標準化作業中だった絵文字の説明の更新、HTML5 の仕様の反映、YAML と JSON の記述、Java と Ruby の対象バージョンの更新、標準化異体シーケンスの説明の追加が並びます。Web サイトやメールで UTF-8 の使用が増えたことを反映した修正も含まれており、内容は 2018 年時点の規格と環境に合わせて整えられています。

符号化文字集合と符号化方式を分けて考える意味

文字コードの議論が混乱しやすいのは、どの文字にどの番号を振るかという符号化文字集合の層と、その番号をどのようなバイト列で表すかという符号化方式の層が、日常会話では同じ「文字コード」という言葉で呼ばれてしまうためです。JIS X 0208 という同じ文字集合を、Shift_JIS、EUC-JP、ISO-2022-JP という異なるバイト列で表せるのがその典型です。Shift_JIS では 2 バイト文字の 2 バイト目に ASCII のバックスラッシュと同じ値が現れることがあり、文字の境界を知らない処理がそれを特殊文字と誤解すると、表示や置換が壊れます。Unicode でも同じ区別が必要で、1 つの文字に対応する符号位置は UTF-8 なら 1〜4 バイト、UTF-16 なら 1 つか 2 つの 16 ビット単位で表されます。Java の char は 16 ビットの単位なので、サロゲートペアで表される文字は 2 つの char に分かれ、文字数を数える処理や部分文字列の切り出しで不具合が起きます。2 つの層を意識して読み分けられるようになると、文字化けの調査は推測ではなく、どの変換で何が起きたかを確かめる作業に変わります。

向く開発者と、2018 年時点の内容として読む前提

本書が特に役立つのは、ファイル連携やメールの処理、データベースへの取り込みで文字化けや変換の失敗に繰り返し出会う開発者と、データフォーマットを設計する立場の人です。第 7 章は Java と Ruby を例にしているため、ほかの言語を使う場合は言語ごとの文字列の仕様を自分で照らし合わせる必要があります。また Unicode は版を重ねて文字が追加され続けているので、絵文字や個別の文字の扱いは 2018 年時点の Unicode 11 を前提とした説明として読むのが適切です。文字化けのたびに場当たりの対処を重ねてきた人にとって、文字コードの原則から具体的な落とし穴までを 1 冊で体系立てて押さえられる本書が向く解説書です。

言及した記事 (6 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: