web-dev-qa-db-ja.com

PHP utf-8へのデフォルトのエンコーディング?

「PHPクックブック」では、発信データの文字エンコーディングをutf-8に適切に設定するには、default_encoding構成をutf-8に編集する必要があると彼らは述べています(p.589)。

ただし、php.iniにこの構成が見つかりません。 default_encoding = "utf-8"と言う行を追加するだけですか?

;default_charset = "iso-8859-1"があります。ご覧のとおり(;)、現在はアクティブ化されていません。セミコロンを削除して"utf-8"に設定する必要がありますか?これでデフォルトのエンコーディングが処理されますか?

また、何をすべきかわからない他のエンコードディレクティブも見つかりました。

[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
...
; http://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15
...
;mssql.charset = "ISO-8859-1"
...
;exif.encode_unicode = ISO-8859-15

単にすべてをutf-8に置き換えてはならない理由はありますか?

29
JDelage

default_charsetをUTF-8に設定する必要があります。

default_charset = "utf-8"

(PHP Cookbookでは、default_encodingの変更を求められた場合、タイプミスが含まれている可能性があります—聞いたことはありません。)

また、UTF-8エンコード文字を出力する場合は、WebサーバーがUTF-8を出力するように設定する必要があります。 Apacheでは、これはhttpd.confファイルで設定できます。

AddDefaultCharset UTF-8

iconvexif、およびmssqlエンコーディング設定の変更に関しては、おそらくこれらを設定する必要はありません(設定はとにかくコメントアウトされています)が、それは良いことですとにかくすべてをUTF-8に変更することをお勧めします。

42
Ben D

行を変更する

;default_charset = "iso-8859-1"

読む

default_charset = "utf-8"

その他のオプションについては、触れないでください。デフォルト設定を避け、常にすべての操作で明示的にエンコーディングを設定します

  • データベース接続
  • ファイルの読み取りと書き込み、
  • iconvで変換します。

また、PHPファイルが保存されるエンコーディングに注意してください。表示または比較する文字列が含まれている場合は特に、UTF-8であることを確認してください。

7
gioele

Mysqlクエリでラテン語のアクセントが認識されないため、クエリが失敗するという問題がありました。私は、pdoを使用してmysqlを呼び出すと、文字セットを追加する必要があることがわかりました。奇妙なことは、私が使用した以前のサーバーが正常に動作したことです!

$dsn = 'mysql:Host=localhost;dbname=retirodo_main;charset=utf8';
- - - - - - - - - - - - - - - - - - - - - - - - - ^^^^^^^^^^^^
4
Miguel

Htaccessレベル(.htaccessファイル)では、phpディレクティブはphp_value default_charset UTF-8

0
ontananza

解決するために、「UTF-8」を「UTF-8」(ダッシュなし)に変更し、代わりに問題を解決しました。

CentOS

イザイアス・モウラ

0
user7232321