*

文字化けを回避するには

公開日: : 最終更新日:2015/05/20 PHP, 講義

こんにちは。松本です。

最近は実務ではJavaをやっていることが多いのですが、まだ普及していないフレームワークを使っているので調べるのが大変です。検索すると大体英語なんですよね・・・大学受験の時に多少勉強していたんで、全然読めないことはないですが、やっぱようわからん時が多いです。

プログラムも世の中にでている情報は英語のほうが圧倒的に多いです。アメリカ人だったらよかったのに・・と思う時がたまにあります。

さて、今までのサンプル文は人名などに英語を使っていたことが多かったと思います。echo “hello,world”から始まり、人名など極力英語、または数字を使いました。これは英語できますよ、アピールをしているわけではありません(笑)

ためしに、日本語で書かれた方はわかると思いますが、文字化け(文字が正常に表示されないこと)を起こす可能性があります。

文字化けとは?

プログラムをやっていると情報収集以外で真剣にアメリカ人だったらよかったのに・・と思うときがあります(爆)それが文字化けを起こした時ですね。

実は文字化けというのは英語や数字では起こりません。日本語や中国語などだとおきます。特にメール関連ではひどいもので頻繁に文字化けが起きます。文字化けは熟練のプログラマーであってもぶつかる壁の一つです。

完全に解決できない時もありますが、基本的な原理と対処法を知っておきましょう。

文字化けが起こる原因

文字化けが起こる原因は一言でいうと文字を保存するときと表示するときの対応表が違うからです。コンピューターは実は文字を数字で保存しています。コンピューターにとって文字とは絵のようなものですので、形をそのまま保存しているわけではありません。

内部に対応表みたいなものがあり、松本だったら松=32,本=56みたいな感じです。(例であって実際にはもっと複雑です。)

これは保存するときだけではなく画面に表示するときも同じです。32,56で保存されているデータを今度は 対応表をみて松本に直そうとしているのです。このとき32=田 56=中という対応表を使ってしまうと、「松本」と保存したのに「田中」と表示されてしまいます。

文字化けとはこのように保存するときと表示するときの対応表の違いから生まれます。

英語と数字の文字化けがないのはどの対応表でも対応が同じになっているからです。

文字コードについて

実はこの対応表のことを文字コードといいます。文字コードにもいろいろありまして、有名なところでいうとShift-JIS,EUC-JP,UTF-8などでしょうか。

ようは文字化けというのは「保存するとき」と「表示するとき」で対応表を一緒にしてあげればいいのです。ちなみに文字コードは2015年5月現在UTF-8で統一することが一般的です。特殊なケースでないかぎりUTF-8で保存しましょう。

保存する時

そんなこと言われても文字コードなんてどこで指定できるのさ・・と思われた方もいるかもしれません。

文字コードなんて普段意識しないと思いますが、実はメモ帳でなにか書いて保存するときには下記のように文字コードを保存する場所があるのです。

SnapCrab_名前を付けて保存_2015-5-1_20-36-16_No-00

もちろんメモ帳以外のテキストエディタでも文字コードを指定することは可能です。といいますか、文字コードが指定できないエディタなんてあるわけないので、もし使ってたら捨てましょう(爆)

表示する時

さて、保存するときはOKでしたが、肝心なのは表示するときですね。こちらも表示するときの文字コードをどうやって指定するんだ?と思われた方もいるかもしれません。

HTMLでサイトを表示するときに下記のような決まり文句を書きませんでしたか?

最初のころはあまり深く考えずに、保存していたと思いますが、実はこの

のUTF-8という部分が文字コードをUTF-8に指定しています。

余計なお世話が文字化けを生む

ここまで文字化けを起こさないための方法について簡単に書きました。実はUTF-8で保存し、HTMLヘッダーを書かずに日本語を表示しても文字化けしないこともあります。なぜかというとブラウザが気を利かせて、文字コードを推測することがあるからなんです。

保存されている文字番号を見て、大体この番号の羅列だとUTF-8かな・・・みたいな感じで憶測で決めるんですね。あるいは初期設定できまっていたりします。だから正規のやり方で保存していなくても必ずしも文字化けするわけではありません。

あくまで人間ではないので不正確なこともあり、それが文字化けを起こします。

文字化けに出会ったら

以上、簡単な文字化けの対処法について書きました。非常にシンプルだったので難しくはなかったと思いますが、文字化けはブラウザでデータを表示させるときだけではなく、データベースやメールなどさまざまなケースで起こります。

その時はぜひ保存するときと表示するときの文字コードを考えてみましょう。

私も去年、本番リリース当日に文字化けが起こって心臓が止まりそうになりました。なんとか回避できましたが・・・・

関連記事

よく使う処理をまとめよう その1 (関数)

おはようございます。松本です。 私の会社では10時半から掃除の時間でして、ここ数ヶ月ずっとやっ

記事を読む

PHPのメリット・デメリット

うちのブログで一番読まれている記事が「フレームワークのメリット・デメリット」ですね。 タイトル

記事を読む

勘違いしてはいけない未経験ややる気という言葉

かなり久しぶりの投稿になってしまいました・・・ 以前ダイエットに成功し、2年以上かけて10kg

記事を読む

プログラミングが初心者にとって難しい4つの理由

今回は初心者がプログラミングをやるのがなぜ難しいかをしっかり書いていこうかと思います(爆)。

記事を読む

PHPで掲示板を作ろう! 掲示板の作成方法 その4(ファイル読み込みとHTML表示)

今回でラストです。(次回はまとめをやる予定ですが。) これだけのソースにしては説明が長かったで

記事を読む

PHPで掲示板を作ろう!(データベース編) その2 MySQLログイン編

あ、最近はこのブログの画像に凝るようにしています。サイドバーなんかみていただくとブログのアイキャッチ

記事を読む

初心者が知っておくべきプログラミングの学習法

おはようございます。松本です。 最近、体重が増えているのが悩みでして今現在71kgあります。去

記事を読む

XAMPPインストール

さて、XAMPPの初歩的な説明とエディタについて説明をしたところで実際にXAMPPをインストールして

記事を読む

「初級」〜「中級」のPHPエンジニアのスキルについてまとめてみる(DB編)

本日はデータベース系の必要な技術について。 ウェブエンジニアといっても技術領域が非常に広いので

記事を読む

データを扱ってみよう その1(変数)

こんにちわ、松本です。 前回の記事は読んでいただけたでしょうか。私よりPHPに関して知識のある

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

転職エージェントについて

さて、エンジニアとして転職を考えている人であれば転職エージェントを使っ

エンジニアが転職して年収を上げる方法を考えてみました。

えー前回の記事でも書きましたが、2020年2月現在転職活動中です。

2020年のご挨拶

今更ですが、明けましておめでとうございます。 2019年も2本し

自社開発>客先常駐である本当の理由

このブログでも何回か取り上げていますが、ITエンジニアの働き方としては

エンジニアにとって必要なコミュニケーション能力とは

気がついたらもう3月下旬になっていますね・・ 年末年始忙しかった

→もっと見る

  • follow us in feedly
PAGE TOP ↑