文字化け 原因究明に向けて
初掲載日: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
パソコンno1
サーバーno2
point収集no3
モバイルno4
調べ物no5
クレジットカードno6
オーディオno7
Linkサイト
うなぎの寝床
車・バイク
写真
プチ農業
SUZUKI-STYLE
サイト・アクセス解析(ana)
うなぎの寝床
車・バイク
プチ農業
SUZUKI-STYLE
サイト・アクセス解析(w3a)
うなぎの寝床
車・バイク
プチ農業
Photo
SUZUKI-STYLE
めにゅう
雑記
パソコンとの出会い
ナレータ機能停止方法(Windows8以降)
HP_ProBook_4540sのSSD化
Lenovo ThinkPad x220 メモリー、SSD換装
Lenovo ThinkPad x220 Win10導入
LANケーブルのコネクタを付けなおしてみた
USB接続のHDMIコンバータ購入してみた
ドトールコーヒーのWIFIを試してみた
PhilipsのフルHDのモニター購入
Philipsアカウント登録、ユーザー登録
Philipsmディスプレイドライバ更新
MicroSDカードをSATA化する基盤
MicroSDカードをSATA化する基盤のベンチマーク結果
もしもアフィリエイトの商品リンクの文字化け原因究明に向けて
ThinkPad X220 CMOSバッテリー交換作業
elecom製ルーターWRC-1167GHBK2-sの導入
Windows Onedriveの設定
WIndows Userの設定
歴代PC紹介
自作PCスペック(1号機)
東芝Libretto L5(無線LANモデル)
東芝dynabook_SS2110
日立Prius Air Note100F(100F5TVC)
富士通FMV-D5250
東芝ARROWS_Tab_QH55M
ASUS u24a px3230h
富士通 LIFEBOOK A550/B
HP ProBook 4540s
Dell OptiPlex 7010 USFF
Lenovo ThinkPad x220
調べてみたこと
Bluetoothについて
勉強
Soft
便利なサービス
自宅環境