• ブログTOP
  • AI・ディープラーニング
  • AR
  • VR
  • WEBサイト
  • WEBマーケティング
  • SEO
  • SNS
  • その他
  • お問い合わせ

ALAKI株式会社

COZIKEEいつまでも使えるTech情報発信ブログ

BOMの地雷を踏み抜かない正しい文字コードとの接し方

2016年3月11日

  • このエントリーをはてなブックマークに追加

こんばんは、寒暖の差が激しい日が続きますが、確実に春が近づいているのを感じているWebプログラマーの篠田です。

以前にお話させて頂きました「Web制作で絶対に使ってはいけないエディタ!」で文字コードが重要というお話をしましたが、使ってはいけないエディタ以外でも油断していると罠に引っかかり、文字化けに苦しむというお話をご紹介したいと思います。

この記事の目次

  • 1 テッパン文字コード「UTF-8」
  • 2 BOM(ボム)という地雷
  • 3 BOMの基本の「き」
  • 4 ここが怖いよ「BOM付きUTF-8」
  • 5 BOM付きが無双するとき
  • 6 まとめ

テッパン文字コード「UTF-8」

実はWebブラウザで日本語が取り扱える文字コードというのは4種類あります。
簡単にご紹介していきましょう。

創世記に活躍した過去の人「Shift-JIS」

むかしむかし、iPhoneが存在していないWeb界隈でメジャーに使われていた日本語を取り扱える文字コードです。

Microsoft製品の基本文字コードとして現在もExcelなどではよく見かけますが、最新のHTML5などで作られているWebページではまず見かけなくなった過去の人。

文字化けの温床にもなるやっかいな文字コードとして有名。

そして、特殊文字(①㈱など)が確実に文字化けをすることでも有名。

また、ガラケーの基本文字コードでもあったのでプログラマーとして何度、苦汁を飲まされたことか。。。

絶対選んではいけない文字コード不動の「No.1」

PHP4時代にこの文字コードで作っていました「EUC-JP」

PHP7がリリースされて3ヶ月あまりですが、その昔まだ「PHP4がでたー!!」とか騒いでいた時に使っていたのは「EUC-JP」でした。

プログラムは「EUC-JP」、HTMLは「Shift-JIS」という今考えるとなんとも頭の悪い組み合わせがデフォルトだった時代がありました。

プログラムを扱う文字コードとしては楽な文字コードでしたが、常に文字コード変換を使わないいけない面倒くささに辟易していたのもいい思い出です。

メールの文字コードといえば「ISO-2022-JP」またの名を「JISコード」

現在でこそ、いろいろなメーラーがありますが、10年ほど前はMicrosoft大帝国時代。
その当時は今は亡き「Outlook Express」か「Outlook」が主流で、プログラムからメールを送信するときはこの「ISO-2022-JP」にして送信しないと文字化けがするという素敵仕様だったのでお世話になりました。

Webページを作るときにはまず使わない文字コードですが、現在でもブラウザの文字コード欄にはしっかりと「ISO-2022-JP」の名前が刻み込まれています。

日本語最強文字コード「UTF-8」

現在の主流文字コード。

特殊文字もアラビア文字も中国語、簡体字、ハングル文字なんでもござれの最強文字コード。

もちろん、HTMLもPHPもこの文字コード1つで文字化け無しで作れるので、文字コード変換なんて言うまどろっこしいことは一切しなくていいという幸せ体験ができるようになりました。
※Web業界歴6年以上ぐらいになると、これが幸せと思えるのですが。。。

なんだか、愚痴が40%ぐらい含まれた文章になりましたが、日本語圏で使われている文字コードがどんなものがあるのかは何となくご理解いただけたかと思います。

そんな最強「UTF-8」にも1つ気をつけておかないと文字化けの恐怖に絶望する場合がありますので、見ていきましょう。

BOM(ボム)という地雷

文字コードを選択するときは「UTF-8」にすればいいんだね!と思ってくださいと言えれば簡単だったのですが、実はそうは行かない場合があります。

下記の画像はWindowsで使われているエディタの1つ「TeraPad」のプロパティ画面です。

UTF-8Nがあるエディタ1

何かおかしなところがありますね。

UTF-8Nがあるエディタ2

最強の「UTF-8」が2種類あるではないですか!?

実はエディタによっては「UTF-8」と「UTF-8N」の2種類が表示される場合があります。

ここで、先ほどの話ですが安易に「UTF-8最強!!!」と言って「UTF-8」を選んでしまうとBOMという地雷を盛大に踏み抜いてしまい、文字化けに悩まされます。

BOMの基本の「き」

正式名称を「バイトオーダーマーク(byte order mark)」といい、その頭文字を取って「BOM(ボム)」と言っています。

「BOM」は、プログラムがテキストデータを読み込むときに、事前にUnicodeで表現されたテキストデータであるということを示すため数バイトの【見えない文字】のことをいいます。

昔のMac(この場合はMacintoshをさす)と昔のWindows(この場合はMS-DOSをさす)の間で正常なUnicode(UTF-8の大本みたいな文字コード)でのデータのやりとりをするためにはBOMが必要だった時代がありました。
※MS-DOSは本当はWindowsとは異なるOSであり別物。あくまでイメージとして昔のWindowsと表現してます。

また、XMLをUTF-16で表す場合は「BOM」は必須の設定になっていたりもします。

ただ、現在においてこの「BOM」を必要とする機会は殆ど無く、特に「UTF-8」においてはBOMがなくても動作するよう作られており、逆にBOMがあることで文字化けのリスクを負うようになります。

なので最強と呼んでいる「UTF-8」というのは「BOMなし」の「UTF-8」のことを指します。

上記を踏まえて先ほどの「UTF-8」と「UTF-8N」どちらが「BOMなし」でしょうか?

正解は「UTF-8N」が、最強「UTF-8」になります。

この「UTF-8N」というのが「BOMが付いていないUTF-8」のことを指します。

ただし、最近主流のエディタには「UTF-8N」などという表記は殆ど見かけません。
日本製のエディタの一部でその生存を確認する程度になっています。
※「TeraPad」がその貴重なエディタの1つといえます。

エディタによっては「BOM」という項目をチェックボックスで選択できるようになっています。
もし、このチェックボックスにチェックが入っているときは、ソッと外して保存しましょう。

ここが怖いよ「BOM付きUTF-8」

さて、BOMというものを知った上で、BOM最大の恐怖についてご紹介しておきましょう。

実は、最近のエディタでは、ぱっと見ただけでは「BOM付き」か「BOMなし」かが分からないというものがあります。

例えば、Macのエディタ「CotEditor」には「BOM」の設定がそもそも無かったりして
「BOM付き」であっても「BOMなし」として認識します。

これの怖いところは、間違って「BOM付き」で保存したファイルで文字化けをしていても、「BOM」をスルーするエディタでは「UTF-8」としか表示されないので「BOM」が原因であることに気づきにくいという点です。

なので「あれ?UTF-8なのに文字化けしている!?」という現象に遭遇したらとりあえず再度UTF-8で保存しなおせばBOMが消えてくれて問題が解決するはずです。

BOM付きが無双するとき

最後に、厄介者のBOMですが、これが活躍する場面が実はあります。

それは、CSVファイルをPHPなどで作る場合です。

通常、CSVはMicrosoft Excelで開くことがほとんどだと思います。
※KINGSOFT Officeを使っているとかは少数派なので無視!

Microsoft Excelの標準文字コードは「Shift-JIS」で、「UTF-8」でCSVを作るとバッチリ文字化けします。

そのため、CSVをわざわざ「Shift-JIS」に変換して書き出したりしていましたが、実はMicrosoft Excelは「UTF-8」を認識することができます。

そう、「BOM付き」であればね。

Microsoft Excelは良く言えば「真面目」、悪く言えば「融通が利かない」という感じで文字コードを認識しています。
そのため、BOMなしでは正しくUTF-8と認識できず標準の「Shift-JIS」で文字を解釈してしまい、文字化けしてしまいます。

しかし、「BOM付きUTF-8」としてCSVを書き出せば、あら不思議。文字化けせずにExcelで開くことができます!
※具体的なコードはまた別の機会に。

まとめ

最強のUTF-8を使いこなすには「BOM」の存在を理解していないと突然文字化けという地雷を爆発させてしまう恐れがありますが、原因さえわかっていれば対処は容易なはずです。

すこしでも、BOMで爆発する不幸なWeb関係者が減ることを祈っております。

 


現場の業務フローに寄り添ったWebシステムをお求めなら、私たちALAKIにご相談ください。

ALAKIは経営者様が感じている問題点と、実際にWebシステムを利用される現場スタッフ様が直面している課題を、弊社システムエンジニアが丁寧に聞き取り、お客様と共にシステムを作り上げていきます。
業務改善が実現できるWebシステムをお求めの方は、是非ALAKIにご相談ください。

・ALAKIのWebシステム開発

・ALAKIのクラウド型受発注システム

  • ツイート
  • このエントリーをはてなブックマークに追加

You may also like...

  • PC画面でのテキストチェックで間違いに気づかない理由

    PC画面でのテキストチェックで間違いに気づかない理由

    22 1月, 2016

  • photo-1416339442236-8ceb164046f8

    今更聞けない!Macの【小技】を使い倒して作業効率化

    19 1月, 2018

  • 企業のリクルート活動にもマーケティング要素が必要? 0

    企業のリクルート活動にもマーケティング要素が必要?

    27 11月, 2014

  • Next story スポンサードサーチとYDNのいいとこどり!Yahoo!プロモーション広告のサーチターゲティング機能のご紹介
  • Previous story Twitter広告のキーワードターゲティングでコンバージョンが取れるキーワードの選定法

弊社サービス

MONJI+ MUGHEN ALAKI クラウド型受発注システム さよなら過去のAR。WebARがイベント集客に革命を起こします。

運営会社

ALAKI株式会社 ALAKI株式会社採用サイト

人気の記事

  • alaki1462_A_businessman_who_works_logically_1da80a2e-c297-4911-bdd6-feba0ebf1357

    仕事術

    【書籍要約】数学的な仕事術大全

    4 11月, 2024

  • fv-main-img-min

    空間コンピューティング

    世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました

    22 6月, 2023

  • Virtual reality players isometric vector illustration. VR UI and navigation. Futuristic digital technology. Virtual screen. Mixed reality 3d concept. Person in VR headset. Web banner idea

    AR

    Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ

    6 6月, 2023

  • AWE

    未分類

    ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!

    26 5月, 2023

  • python-logo-master-v3-TM

    pyhotn / 業務効率化

    「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

    2 2月, 2023

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

アーカイブ

  • 2024年11月
  • 2023年6月
  • 2023年5月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年2月
  • 2021年12月
  • 2021年9月
  • 2021年7月
  • 2021年6月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年6月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2013年10月
  • 2013年9月

Facebook

お問い合わせ

お問い合わせ

人気の記事

  • 【書籍要約】数学的な仕事術大全
  • 世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました
  • Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ
  • ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!
  • 「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

検索

ALAKI株式会社 © 2025. All Rights Reserved.