mb_internal_encoding
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_internal_encoding — 内部文字エンコーディングを設定あるいは取得する
パラメータ
encoding
-
encoding
は、HTTP 入力文字エンコーディング変換、 HTTP 出力文字エンコーディング変換および mbstring モジュールの文字列関数においてデフォルトの文字エンコーディングとして使用されます。 マルチバイト正規表現用のエンコーディングは、ここで扱う内部文字エンコーディングとは別であることに注意してください。
戻り値
encoding
が設定された場合、
成功した場合に true
を、失敗した場合に false
を返します。
このとき、マルチバイト正規表現用のエンコーディングは変更されません。
encoding
が省略された場合、
現在の内部文字エンコーディング名を返します。
エラー / 例外
PHP 8.0.0 以降では、
encoding
が不正な値の場合に
ValueError がスローされるようになりました。
これより前のバージョンでは、
E_WARNING
が発生していました。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 |
encoding は、nullable になりました。
|
8.0.0 |
encoding が不正な値の場合に
ValueError がスローされるようになりました。
これより前のバージョンでは、
E_WARNING が発生していました。
|
例
例1 mb_internal_encoding() の例
<?php
/* 内部文字エンコーディングをUTF-8に設定 */
mb_internal_encoding("UTF-8");
/* 現在の内部文字エンコーディングを表示 */
echo mb_internal_encoding();
?>
参考
- mb_http_input() - HTTP 入力文字エンコーディングを検出する
- mb_http_output() - HTTP 出力文字エンコーディングを設定あるいは取得する
- mb_detect_order() - 文字エンコーディング検出順序を設定あるいは取得する
- mb_regex_encoding() - 現在のマルチバイト正規表現用のエンコーディングを取得または設定する
+add a note
User Contributed Notes 5 notes
Joachim Kruyswijk ¶
18 years ago
Especially when writing PHP scripts for use on different servers, it is a very good idea to explicitly set the internal encoding somewhere on top of every document served, e.g.
mb_internal_encoding("UTF-8");
This, in combination with mysql-statement "SET NAMES 'utf8'", will save a lot of debugging trouble.
Also, use the multi-byte string functions instead of the ones you may be used to, e.g. mb_strlen() instead of strlen(), etc.
webfav at web dot de ¶
9 years ago
all together
<?php
// ------------------------------------------------------------
header('Content-Type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_regex_encoding('UTF-8');
// ------------------------------------------------------------
?>
mortoray at ecircle-ag dot com ¶
19 years ago
Be aware that the strings in your source files must match the encoding you specify by mb_internal_encoding. It appears the Parser loads raw bytes from the file and refers to its internal encoding to determine their actual encoding.
To demonstrate, the following outputs as espected when the /source/ file is Latin-1 encoded:
<?php
mb_internal_encoding("iso-8859-1");
mb_http_output( "UTF-8" );
ob_start("mb_output_handler");
echo "???<br/>";
?>???
Now, a typical use of mb_internal_encoding is shown as follows. Make the change to "utf-8" but leave the /source/ file encoding unchanged:
<?php
mb_internal_encoding("UTF-8");
mb_http_output( "UTF-8" );
ob_start("mb_output_handler");
echo "???<br/>";
?>???
The output will just show the <br/> tag and no text.
Save the file as UTF-8 encoding and then the results will be as expected.
mdirks at gulfstreamcoach dot com ¶
17 years ago
In response to mortoray at ecircle-ag dot com:
The characters display fine as long as you set the Encoding to something more "Latin 1" compatible (i.e. US-ACSII, ISO-8859-1, ISO-8859-1, or Windows 1252). PHP.net auto-detects to UTF-8