*

文字化けを回避するには

公開日: : 最終更新日: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 コードを1行も書かずに理解してみる

今回はオブジェクト指向について書きます。 プログラミングを少しでもやった(orやろうと思った)

記事を読む

初心者でもできる!作れる!WEBサービスの開発 その3 運営体験記編

(前回までの続き) 初心者でもできる!作れる!WEBサービスの開発 その1 準備編 初心

記事を読む

基本ルールのまとめ

こんばんは、松本です。 このブログのコンテンツもこのエントリーで25本目となってきました。

記事を読む

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

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

記事を読む

PHPで掲示板を作ろう! 掲示板の作成方法 その2

前回の学習 PHPで掲示板を作ろう! 掲示板の作成方法 その1 それでは掲示板の作成方法その

記事を読む

なぜPHPなのか

はじめまして、プログラミングの講師を担当させていただきます、松本と申します。 このたび、株式会

記事を読む

「初心者が勉強するのに良いプログラミング言語は何ですか?」を真面目に考えてみる

プログラミングをそもそもやったことがない方であれば、タイトルのように「どのプログラミング言語をやった

記事を読む

未経験者がWEBエンジニアとして就職する前に身につけておいたほうがよいスキル一覧

夕方、用事から帰ってきてから寝てしまったので寝れなくなっている松本です。 寝れないので今日はも

記事を読む

CMSの大まかな構成

前回に引き続き、CMSの大まかな構成について話したいと思います。 HTMLサイトとの違い CMS

記事を読む

どんなプログラマが身につけておいても損はない重要なスキルとは?

のっけからストレートなタイトルですいません。 ちょっとあおり気味なタイトルですが、今日紹介する

記事を読む

Message

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

無料PHPスクール
自社開発>客先常駐である本当の理由

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

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

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

エンジニアを採用する上で大事なこと

本日はエンジニアの採用について書きたいと思います。最近少し採用に絡んだ

エンジニアが給料を上げる方法を真面目に考えて見ました。

本日はエンジニアと給料の話題について触れて行こうと思います。 エ

エンジニアの「スキル」とはなんぞや

給与が低いことに悩んでるエンジニアへのアドバイスをツイートで見たところ

→もっと見る

  • follow us in feedly
PAGE TOP ↑