トップページ >PC >文字化け 原因究明にむけて



文字化け 原因究明に向けて

初掲載日:2020-02-13

最終更新:2020-02-13

 文字化けが発生したのは、どの部分かといいますと、もしもアフィリエイトかんたんリンクで作成した商品へのリンク内です。アマゾンで見るとか楽天市場で見るとかyahoo!ショッピングで見るの部分が上手く表示されずに嫌な気分になっていた訳です。
 とりあえず簡単なところから原因解明に向けて動き出してみました。

まずはソースコードを見てみた

 パッと見、ソースにアマゾンで見るとかの文字はないのでプログラム的(JavaScript)なもので呼び出されていることが予測できるだけで、全く打つ手なしです。
 商品名は、ソースコードの中にあり、この部分は文字化けせず、クリックする部分のamazonとか楽天市場の部分(ソースコードに現れない部分)が文字化けしている。 ってことは、わかった!!Javaから吐き出された文字の文字コードがShift-jisではないと言うことです。ってことで、吐き出された商品リンクをページのソースから取り出して文字コードすり替えてページ元に張り付ける!めんどくさい作業で解決策が見えてきたのだが……

文字化けで悩んでるのは私だけ?!

 ネット上で解決策を探ってみたが、周りの方々は困ってません。困ってるのは、WordPressでとあるプラグインとの相性でバグが出るくらいですね。って今の時代皆さんWordPressでHP(ブログ?)作っちゃうんでしょうね。
 引き続き探っていくと、今のコンピュータの世界では文字コードの主流がUTF-8らしいですね。知らんかった、shift-jisなんて日本特有だとは認識していたが、何とかなっちゃうんだから大丈夫と思っていたけど、私の身の回りでもとうとう不具合が出ました。思い切ってサーバーで扱う文字コードをShift-jisからUTF-8に変換することにしました。

PHPの設定をUTF-8に

 何故にPHPの設定変更をって感じですが、私のHPのファイルはほぼ全てPHPファイルで出来ているからです。だから、PHPの設定を見直す必要があるわけです。
 PHPファイルで出来ていると言っても高尚なことをしているわけではなく、ファイル内で共通するファイルを呼び出したり、値を読み込んで値によって動作を変えたり、と言った一寸だけ動的なページになっているので、拡張子はphpなんです。だからphpの設定を変えると。

サーバーの設定変更

   

現在使っているLOLIPOPサーバーにログインし、サーバーの管理・設定からPHP設定へ移動します。


php.iniの欄の設定へ行くのですが、その前にPHPのバージョンが5.2のままだったので最新?の7.3へバージョンアップさせておきました。


php.iniの設定の1番下のdefault_charsetをUFT-8に変更します。


先ほどの設定で、UFT-8コード仕様になったので、例のかんたんリンクで作った商品紹介の入ったページをUTF-8コードで保存しなおします。秀丸エディタ使用してます。


非常に見難いのですが、アマゾンで見る、楽天市場で見る、yahoo!ショッピングで見るの部分はキチンと表示されていますが、右の方はアルファベット以外の文字が化け化けです。これで、商品コードのJavaが吐き出す、amazonで見るなどの文字の文字コードがUFT-8であることがわかりました。ちなみに、左の段は先ほどUTF-8コードで保存されたファイル、右の段は以前のままShift-jisで保存されています。


php.iniの設定でdefault_charsetをShift-jisに戻すと、左の段の部分が文字化けし、右の段の部分がキチンと表示されます。

既存ファイルの文字コードをUFT-8へ

 次の作業は、全ファイルの文字コードをUFT-8へ変更していく作業が必要なのですが、はっきり言ってめんどくさい。  こういう場合はネットで探せば良いソフトがあるわけで心配していないです。問題は、サーバ側で変更してくれた方がありがたいのだが、サーバに不具合出ても怖いのでローカルで変換してから再アップロードする手順で行こうと考えました。  そこで気になったのが、私が使用しているFTPソフトのffftpにはUFT-8への変換がなかったかなと思ったが、忘れてました、ffftpは開発終了していたのです。残念とあきらめかけた時に出てきました。UFT-8への変換機能を追加して公開してくれている強者がおりました。ありがたやありがたや。


ffftpにお世話になっていた方には懐かしいバーだと思います。UFT-8のコードが選べるようになっており、選択すればアップ時に変換してくれるようになりました。


全ファイルを再アップしたのですが、どうもおかしい。リンクなど一部分が文字化けのまま。なんでか原因を突き止めるのには時間はかかりませんでした。
 文字化けしていたのは、PHPでファイルを読み込ませている部分であったので、拡張子でバイナリかアスキーかを判断しているところで、バイナリーモードで転送(文字変換無し)されていたのでした。読み込ませるファイルの拡張子をアスキーモードで転送するファイルに登録して解決です。

作者紹介

 パソコン関連では、大学生の頃に初めてのパソコンを自作してから、怪しくパソコンを活用している今日この頃です。この度、長年の思いだった、独自ドメインに手を出してしまいました。→お名前.com
 思い返せば、大学時代に自作パソコンに手を出して、FreeBSDなるものに出会ってから いつかは独自ドメインとって自宅サーバーを運営して・・・・・・何って目的はなかったけど自宅サーバーでしたね。当時のFreeBSDの雑誌には自宅サーバーって言葉が良く出てた気がします。
 今回は、月額208円のレンタルサーバー(【ハッスルサーバー】)を利用しての独自ドメイン運営になりますが、ゆくゆくは自宅サーバーです。電気代セキュリティー面など色々ハードルはありますが、頑張りたいです。

サイト内Link

Linkサイト

サイト・アクセス解析(ana)

サイト・アクセス解析(w3a)