趣味のPHP |→お問い合わせ趣味のPHP
  1. ホーム
  2. 失敗から学ぶPHP
《記事番号:41》 2016-08-08 14:37:42
最近の、別の記事を探す

【タイトル】
phpのバージョンアップで文字が消える。原因はhtmlspecialcharsのencodingデフォルト
【キーワード】
php,バージョンアップ,文字,消える,htmlspecialchars,encoding,デフォルト
【内容】
 サーバーはXREAを使っています。拡張子cgiで動作させているものも含めて、php7への移行確認をしていました。cgiの先頭行末尾でバージョンを選べます。全部55(php5.5)で動かしているつもりでしたが、末尾にバージョンを示す数字を付けてないものがありました。
 いきなり7にする前に55を付けて確認したら、末尾に数字なしの状態で正しく表示されていた文字が出なくなりました。cgiはシフトJISでエンコードしています。
 原因はhtmlspecialcharsのencoding省略時のデフォルトでした。渡したデータの文字コードとencodingの文字コードが異なる時は、データが戻らないようです。
デフォルトはPHPのバージョンによって異なります
PHP 5.6.0 以降---------default_charsetの値を使います
PHP 5.4 と PHP 5.5 ----UTF-8
5.4以前----------------ISO-8859-1
 5.5で正しく動作させるにはencodingに(この場合は)シフトJIS明示指定が必要。7で動作させるにはdefault_charsetで(この場合は)シフトJIS明示指定が必要でした。
 このサイト本体とサイトを作るための自作簡易CMSはUTF-8にするのと同時に5.5に移行したので、エンコード省略しても、デフォルトの問題は顕在化せず、通り過ぎて来たのです。
更新日 2016-08-08
検索


OR検索AND検索
検索方法の違い


更新履歴
追加・更新されたブロックの内容を自動的に表示しています。
メニュー
このサイトは
XOOPSのブロック管理の考え方を参考にして作った自作ツールで作成しています。

このサイトは、全ページどのページからでもリンクフリーです。
このサイトは
 2023/1/6から、このサイトを「パソコンよろず攻防」から「趣味のPHP」に変更しました。過去の記事に現れる、パソコンよろず攻防の文言はそのままにしてあります。
PHPのバージョンアップ