LoginSignup
3
2

More than 5 years have passed since last update.

[PHP] 日本語が出力できないときは文字コードを疑え

Last updated at Posted at 2018-02-14

日本語が格納された変数を htmlspecialchars すると "空" になる

example.php
$example = 'こんにちは';

/* なにも表示されない */
echo htmlspecialchars($example, ENT_QUOTES, 'UTF-8');

原因は文字コード

簡単なコードだったので、メモ帳を使ってつくった
  ↓
エラーメッセージに日本語を使ってる
  ↓
メモ帳の文字コードはShift_JIS
  ↓
文字化け
  ↓
出力の際のhtmlspecialcharsが化けた値を削除?
  ↓
空に。

ということらしい。

第3引数にSJISを指定するか、ファイルの文字コードをUTF-8にするとなおった

example.php
htmlspecialchars($example, ENT_QUOTES, 'SJIS');

メモ帳を使ってコーディングする際はご注意を

追記

[PHP]htmlspecialchars()を使うと文字が消える? | PHP Archive

この引数を省略すると、PHP 5.4.0 より前のバージョンでは ISO-8859-1 、PHP 5.4.0 以降では UTF-8 が指定されます。
そして、指定されたエンコーディングとして有効でない文字は切り捨てられます。

とのこと

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2