LXVI. マルチバイト文字列関数(mbstring)

導入

全ての文字をシングルバイトで一対一表現可能な言語は数多くありますが、 文字表現に単一バイトによる表現範囲を越えるほど多くの文字を必要とする 言語も多くあります。マルチバイト文字のエンコーディング法は、 こうした(256を越える)多くの文字を通常のビット単位の符号化システムで表現するために 開発されました。

マルチバイトエンコーディングで符号化された文字列を(trim, split, splice,などで) 処理する際、こうしたエンコーディングでは二つ以上の連続するバイトが一つの文字を表す 可能性があるため、特別な関数を使用する必要があります。 マルチバイトに対応しない文字列関数を文字列に適用した場合、マルチバイト文字の 先頭バイトまたは終了バイトを検出できずに文字列を壊し、多くの場合には元の意味を 失わせてしまう可能性があります。

mbstringは、これらのマルチバイト対応関数を 提供し、マルチバイトエンコーディング、シングルバイトエンコーディングの処理を 基本的に前提とするPHPで処理することを容易にします。 これに加えて、mbstring は、複数のエンコーディング間での 文字エンコーディング変換を行います。

mbstringは、もともと日本語のWebページで使用する ために開発されましたが、UTF-8やUCS-2のようなUnicodeに基づく エンコーディングや多くの(以下に示す)シングルバイトエンコーディングも処理する ことが可能です。

PHPの文字エンコーディングに関する要件

以下の型のエンコーディングが、PHPで安全に使用することができます。

  • シングルバイトエンコーディングで、

    • 00hから 7fhの範囲の文字に関して、 ASCII互換(ISO646互換)のマッピングを有する。

  • マルチバイトエンコーディングで、

    • 00hから 7fhの範囲の文字では、 ASCII互換のマッピングを有する。

    • ISO2022エスケープシーケンスを使用しない。

    • 単一の文字を表す複数バイトのいずれにおいても 00hから7fhの 値を使用しない。

PHPで動作しないと思われる文字エンコーディングの例を以下に示します。

JIS, SJIS, ISO-2022-JP, BIG-5

これらのエンコーディングで書かれたPHPスクリプトは、 特に符号化された文字列がスクリプトで記述子やリテラルに使用される場合には、 動作しない可能性がありますが、入力されるHTTPクエリに関して mbstringの透過的なエンコーディングフィルタを 設定することでこれらのエンコーディングをほとんど使用しないようにすることが できます。

注意: SJIS, BIG5, CP936, CP949, GB18030 は、読者がパーサ/コンパイラ、 文字エンコーディングと文字エンコーディングの問題点について精通していない限り 内部エンコーディングとして使用するべきではありません。

注意: PHPでデータベースを使用する場合、性能を向上させるためにデータベースとPHPの 内部エンコーディングについて同じ文字エンコーディングを使用することを推奨します。

PostgreSQLを使用している場合、バックエンドの文字エンコーディング と異なる文字エンコーディングを使用することが可能です。詳細につい ては、PostgreSQLのマニュアルを参照ください。

インストール手順

mbstringは拡張モジュールです。 configureスクリプトでモジュールを有効にする必要が あります。詳細は、インストールの 節を参照してください。

以下の設定オプションがmbstringモジュールに関係し ています。

  • --enable-mbstring : mbstring 関数を有効にします。このオプションは、 mbstring 関数を利用するために必要です。

    注意: PHP 4.3.0以降、オプション --enable-mbstring は、中国語、韓国語、ロシア語をサポートするために --enable-mbstring[=LANG] に変更されます。 日本語の文字エンコーディングはデフォルトでサポートされます。 --enable-mbstring=cnを 使用した場合、簡体字中国語のエンコーディングがサポートされます。 --enable-mbstring=twを 使用した場合、繁体字中国語のエンコーディングがサポートされます。 --enable-mbstring=krを 使用した場合、韓国語のエンコーディングがサポートされます。 --enable-mbstring=ruを 使用した場合、ロシア語のエンコーディングがサポートされます。 --enable-mbstring=all が指定された場合、全てのサポートされる文字エンコーディングが 有効となります。しかし、PHPのバイナリサイズは最大となります。 これは、Unicode文字マップのサイズが巨大であるためです。 中国語、韓国語、ロシア語の実験的なサポートはPHP 4.3.0で 追加されたことに注意してください。

  • --enable-mbstr-enc-trans : mbstring変換エンジンを使用したHTTP入力の文 字エンコーディング変換を有効にします。この機能が有効の場合、 HTTP入力文字エンコーディングは、自動的に mbstring.internal_encodingに変換されます。

    注意: PHP 4.3.0以降、このオプション --enable-mbstr-enc-trans は廃止され、mbstring.encoding_translation に変更となります。HTTP入力文字エンコーディング変換は、 このオプションをOnに設定した場合のみ 有効となります。 (デフォルトは、Offです。)

  • --enable-mbregex : マルチバイト対応の正規表現関数を使用可能とします。

実行用の設定

これらの関数の動作は、php.iniの設定により変化します。

表 1. mbstring 設定オプション

名前デフォルト変更可能な範囲変更履歴
mbstring.language"neutral"PHP_INI_PERDIRPHP 4.3.0 から利用可能です。
mbstring.detect_orderNULLPHP_INI_ALLPHP 4.0.6 から利用可能です。
mbstring.http_input"pass"PHP_INI_ALLPHP 4.0.6 から利用可能です。
mbstring.http_output"pass"PHP_INI_ALLPHP 4.0.6 から利用可能です。
mbstring.internal_encodingNULLPHP_INI_ALLPHP 4.0.6 から利用可能です。
mbstring.script_encodingNULLPHP_INI_ALLPHP 4.3.0 から利用可能です。
mbstring.substitute_characterNULLPHP_INI_ALLPHP 4.0.6 から利用可能です。
mbstring.func_overload"0"PHP_INI_PERDIRPHP 4.2.0 から利用可能で、PHP <= 4.2.3 は PHP_INI_SYSTEM です。
mbstring.encoding_translation"0"PHP_INI_SYSTEM | PHP_INI_PERDIRPHP_INI_PERDIRPHP 4.3.0 から利用可能です。
PHP_INI_* 定数の詳細及び定義については、ini_set() を参照してください。

以下に設定ディレクティブに関す る簡単な説明を示します。

mbstring.language string

mbstring で使用される言語設定(NLS)のデフォルト値。 この設定は mbstring.internal_encoding を定義するため、 php.ini の中で mbstring.internal_encoding は、 mbstring.language の後に置く必要があることに注意してください。

mbstring.encoding_translation boolean

入力される HTTP クエリに関して、 文字エンコーディング検出および内部文字エンコーディングへの変換を行う 透過的な文字エンコーディングフィルタを有効にします。

mbstring.internal_encoding string

内部文字エンコーディングのデフォルト値を定義します。

mbstring.http_input string

HTTP 入力文字エンコーディングのデフォルト値を定義します。

mbstring.http_output string

HTTP 出力文字エンコーディングのデフォルト値を定義します。

mbstring.detect_order string

文字コード検出のデフォルト値を定義します。 mb_detect_order()も参照ください。

mbstring.substitute_character string

無効な文字を代替する文字を定義します。

mbstring.func_overload string

シングルバイト対応の関数を mbstring 関数の対応する関数でオーバーロード (置換)します。詳細は、 関数のオーバーロード を参照してください。

HTML 4.01の規約 によると、Web ブラウザは、 フォームのデータを投稿する際にページで使用される文字エンコーディングと 異なるエンコーディングを使用することができます。 ブラウザで使用される文字エンコーディングを検出するには、 mb_http_input() を参照ください。

一般的に使用されるブラウザでは、 指定したHTML文書の文字エンコーディングをかなり正確に推定することができますが、 header() または設定パラメータ default_charset により、 Content-Type HTTP ヘッダで charset を設定する方がより良いでしょう。

例 1. php.ini 設定の例

; デフォルトの言語を設定
mbstring.language        = neutral; デフォルト言語を中立(UTF-8)に設定 (デフォルト)
mbstring.language        = English; デフォルト言語を英語に設定
mbstring.language        = Japanese; デフォルト言語を日本語に設定

;; デフォルトの内部エンコーディングを設定
;; 注意: PHPで動作する文字エンコーディングを使用すること
mbstring.internal_encoding    = UTF-8  ; 内部エンコーディングを UTF-8 に設定

;; HTTP入力エンコーディング変換を有効にする
mbstring.encoding_translation = On

;; デフォルトのHTTP入力文字エンコーディングを設定
;; 注意: スクリプトではhttp_inputの設定は変更できません。
mbstring.http_input           = pass    ; 変換しない。
mbstring.http_input           = auto    ; HTTP 入力を auto に設定
	                                    ; 「auto」は、「ASCII,JIS,UTF-8,
                                        ; EUC-JP,SJIS」に展開されます。
mbstring.http_input           = SJIS    ; HTTP入力をSJISに設定
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; 順番を指定

;; デフォルトのHTTP出力文字エンコーディングを設定
mbstring.http_output          = pass    ; 変換しない
mbstring.http_output          = UTF-8   ; HTTP出力エンコーディングを
                                        ;  UTF-8 に指定

;; デフォルトの文字エンコーディング検出順序を設定
mbstring.detect_order         = auto    ; デフォルトの順番を auto に設定
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; 順番を指定

;; 代替文字のデフォルト値を設定
mbstring.substitute_character = 12307   ; Unicode 値を指定
mbstring.substitute_character = none    ; 文字を出力しない
mbstring.substitute_character = long    ; long の例: U+3000,JIS+7E7E

例 2. EUC-JP ユーザ用の php.ini の設定

;; 出力バッファリングを無効にする
output_buffering      = Off

;; HTTP charsetヘッダを設定
default_charset       = EUC-JP    

;; デフォルトの言語を日本語にする
mbstring.language = Japanese

;; HTTP 入力変換を有効にする
mbstring.encoding_translation = On

;; HTTP 入力エンコーディング変換を auto に設定
mbstring.http_input   = auto 

;; HTTP 出力を EUC-JP に設定
mbstring.http_output  = EUC-JP    

;; 内部エンコーディングを EUC-JP に設定
mbstring.internal_encoding = EUC-JP    

;; 無効な文字を出力しない
mbstring.substitute_character = none

例 3. SJIS ユーザ用の php.iniの 設定

;; 出力のバッファリングを有効に
output_buffering     = On

;; 出力の変換を有効にするために mb_output_handler を設定
output_handler       = mb_output_handler

;; HTTPヘッダ charset を設定
default_charset      = Shift_JIS

;; デフォルトの言語を日本語に設定
mbstring.language = Japanese

;; HTTP 入力変換を有効にする
mbstring.encoding_translation = On

;; HTTP 入力エンコーディング変換を auto に設定
mbstring.http_input  = auto 

;; SJIS に変換
mbstring.http_output = SJIS    

;; 内部エンコーディングを EUC-JP に設定
mbstring.internal_encoding = EUC-JP    

;; 無効な文字を出力しない
mbstring.substitute_character = none

リソース型

この拡張モジュールはリソース型を全く定義しません。

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

MB_OVERLOAD_MAIL (integer)

MB_OVERLOAD_STRING (integer)

MB_OVERLOAD_REGEX (integer)

HTTP入出力

HTTP 入出力の文字エンコーディング変換はバイナリデータも変換して しまいます。HTTP入出力にバイナリデータが使用される場合、ユーザは、 文字エンコーディング変換を制御する必要があります。

注意: PHP 4.3.2およびそれ以前のバージョンの場合、 HTMLフォームのenctypemultipart/form-dataに設定された場合、 mbstring は、POSTデータの文字エンコーディング を変換しません。この場合、文字列を内部文字エンコーディングに変換 してやる必要があります。

注意: PHP 4.3.3以降、HTMLフォームのenctypemultipart/form-dataに設定され、かつ、 php.iniにおいて mbstring.encoding_translationにOnが指定されて いる場合、 POSTデータの変数とアップロードされたファイルの名前の 文字エンコーディングは、内部文字エンコーディングに変換されます。 ただし、クエリキーに関しては、変換されません。

  • HTTP入力

    PHPスクリプトでHTTP入力文字変換を制御する手段はありません。 HTTP入力文字変換を無効にするには、php.ini で行う必要があります。

    例 4. php.iniでHTTP入力変換を無効にする

    ;; HTTP入力変換を無効にする
    mbstring.http_input = pass
    ;; HTTP入力変換を無効にする (PHP 4.3.0以降)
    mbstring.encoding_translation = Off

    PHPをApacheモジュールで使用する場合、PHP iniの設定を httpd.conf により仮想ホスト単位で、または .htaccess によりディレクトリ単位で上書きすることが可能です。 詳細は、設定の節および Apacheマニュアルを参照ください。

  • HTTP出力

    出力の文字エンコーディング変換を有効にする方法は複数あります。 一つ目は php.ini、もう1つは ob_start()ob_start のコールバック関数として mb_output_handler() を指定するものです。

    注意: PHP3-i18nのユーザにとっては、mbstringの出 力変換は、PHP3-i18nとは異なっています。文字エンコーディング は、出力のバッファリング機能を使用して変換されます。

例 5. php.ini の設定例

;; 全てのPHPページで出力の文字エンコーディング変換を有効にする

;; 出力バッファリングを有効にする
output_buffering    = On

;; mb_output_handlerによる出力変換を有効にする
output_handler      = mb_output_handler

例 6. スクリプトの例

<?php

// このページでのみ出力の文字エンコーディング変換を有効にする

// HTTP 出力文字エンコーディングをSJISに設定する
mb_http_output('SJIS');

// 出力のバッファリングを開始し、コールバック関数として"mb_output_handler"
// を指定する
ob_start('mb_output_handler');

?>

サポートされる文字エンコーディング

現在、以下の文字エンコーディングがmbstringモ ジュールによりサポートされています。文字エンコーディングは、 mbstring関数のencodingパラ メータで指定することが可能です。

以下の文字エンコーディングがこのPHPエクステンションでサポートされ ています。

  • UCS-4

  • UCS-4BE

  • UCS-4LE

  • UCS-2

  • UCS-2BE

  • UCS-2LE

  • UTF-32

  • UTF-32BE

  • UTF-32LE

  • UTF-16

  • UTF-16BE

  • UTF-16LE

  • UTF-7

  • UTF7-IMAP

  • UTF-8

  • ASCII

  • EUC-JP

  • SJIS

  • eucJP-win

  • SJIS-win

  • ISO-2022-JP

  • JIS

  • ISO-8859-1

  • ISO-8859-2

  • ISO-8859-3

  • ISO-8859-4

  • ISO-8859-5

  • ISO-8859-6

  • ISO-8859-7

  • ISO-8859-8

  • ISO-8859-9

  • ISO-8859-10

  • ISO-8859-13

  • ISO-8859-14

  • ISO-8859-15

  • byte2be

  • byte2le

  • byte4be

  • byte4le

  • BASE64

  • HTML-ENTITIES

  • 7bit

  • 8bit

  • EUC-CN

  • CP936

  • HZ

  • EUC-TW

  • CP950

  • BIG-5

  • EUC-KR

  • UHC (CP949)

  • ISO-2022-KR

  • Windows-1251 (CP1251)

  • Windows-1252 (CP1252)

  • CP866 (IBM866)

  • KOI8-R

php.iniのエントリではエンコーディング名を指定可能ですが、 "auto" および "pass" も指定可能です。 mbstring 関数には、エンコーディング名と "auto" を指定可能です。

"pass" が指定された場合、文字エンコー ディング変換は行われません。

"auto" が指定された場合、この文字列 は、"ASCII,JIS,UTF-8,EUC-JP,SJIS"に 変換されます。

mb_detect_order()も参照ください。

マルチバイト対応版関数による既存関数のオーバーロード

PHPアプリケーションの多くは、英語等のシングルバイトの言語用に設計 されており、日本語を含むマルチバイト文字列を扱う場合には問題を生 じる場合があります。substr()等のPHPの文字列関 数の多くはマルチバイト文字列に対応していません。

マルチバイト拡張モジュール(mbstring)では、文字列を処理するPHP関数 のマルチバイト対応版(例えば、substr()の場合は mb_substr())をサポートしています。

マルチバイト拡張モジュール(mbstring)では、PHP 4.2.0以降で既存の PHP関数を対応するマルチバイト文字対応版の関数でオーバーロードする 機能をサポートします。関数のオーバーロードを行うと、例えば substr()をPHPスクリプトでコールした場合に、 mb_substr()が代わりにコールされるようになりま す。これにより、マルチバイト文字に対応しないアプリケーションの移 植が容易となります。

関数オーバーロードを使用するには、設定ファイル php.iniの mbstring.func_overloadディレクティブに0以外の 値を設定します。設定値によりオーバーロードされる関数の種類が異な ります。メール関数の場合は1、文字列関数は2、正規表現関数は4を使用 します。論理和をとることにより複数の値を指定可能です。例えば、7を 指定すると全てのメール、文字列、正規表現関数をオーバーロードしま す。オーバーロードされる関数を下表に示します。

注意: ディレクトリ単位の設定でこの関数オーバーロディングオプションを使用することは 推奨されません。これは、実用的な環境ではまだ安定性が確認されておらず、予期しない 結果をもたらす可能性があるためです。

日本語のマルチバイト文字に関する基本事項

多くの日本語の文字は1文字あたり複数のバイトを必要とします。加え て、日本語の環境では複数の文字エンコーディング手法が使用されてい ます。使用されているのは、EUC-JP、Shift_JIS(SJIS)、 ISO-2022-JP(JIS) 文字エンコーディングです。Unicodeが普及しつつあ り、UTF-8 も使用されています。日本語環境のWebアプリケーションを 開発するためには、HTTP入出力、RDBMS、e-mailの処理においてそれぞ れに適した文字集合を使用することが重要となります。

  • 1文字は最大6バイトになる

  • マルチバイト文字は通常シングルバイト文字の2倍の幅となります。 広い幅の文字は「全角」、狭い幅の文字は「半角」と呼ばれます。 通常、「全角」文字は固定幅です。

  • いくつかの文字エンコーディングでは、ISO2022で定義された マルチバイト文字列を開始/終了するためのシフト(エスケープ)シーケンスを 使用しています。

  • SMTP/NNTPでは、ISO-2022-JP を使用する必要があり、ヘッダとエンティティは 各RFCの規定に基づき再度符号化される必要があります。 これらは必須のものではありませんが、多くの一般的なユーザーエージェントは、 他の符号化手法を認識できないため、行っておく方が良いでしょう。

  • i-mode, Vodafone live!, または EZwebのような 携帯電話サービス用に作成されたWebページは、Shift_JISを使用する ことになります。

リファレンス

マルチバイト文字エンコーディングと関連する問題は非常に複雑です。 ここで詳細について記述することは不可能です。詳細な事項については、 以下のURLおよび他のリソースを参照ください。

サポートされるエンコーディングの概要

サポートされるエンコーディングの概要

IANA文字セット登録名: ISO-10646-UCS-4

依存する文字集合: ISO 10646

説明: The Universal Character Set with 31-bit code space, standardized as UCS-4 by ISO/IEC 10646. It is kept synchronized with the latest version of the Unicode code map.

注記: If this name is used in the encoding conversion facility, the converter attempts to identify by the preceding BOM (byte order mark)in which endian the subsequent bytes are represented.

IANA文字セット登録名: ISO-10646-UCS-4

依存する文字集合: UCS-4

説明: See above.

注記: In contrast to UCS-4, strings are always assumed to be in big endian form.

IANA文字セット登録名: ISO-10646-UCS-4

依存する文字集合: UCS-4

説明: See above.

注記: In contrast to UCS-4, strings are always assumed to be in little endian form.

IANA文字セット登録名: ISO-10646-UCS-2

依存する文字集合: UCS-2

説明: The Universal Character Set with 16-bit code space, standardized as UCS-2 by ISO/IEC 10646. It is kept synchronized with the latest version of the unicode code map.

注記: If this name is used in the encoding conversion facility, the converter attempts to identify by the preceding BOM (byte order mark)in which endian the subsequent bytes are represented.

IANA文字セット登録名: ISO-10646-UCS-2

依存する文字集合: UCS-2

説明: See above.

注記: In contrast to UCS-2, strings are always assumed to be in big endian form.

IANA文字セット登録名: ISO-10646-UCS-2

依存する文字集合: UCS-2

説明: See above.

注記: In contrast to UCS-2, strings are always assumed to be in little endian form.

IANA文字セット登録名: UTF-32

依存する文字集合: Unicode

説明: Unicode Transformation Format of 32-bit unit width, whose encoding space refers to the Unicode's codeset standard. This encoding scheme wasn't identical to UCS-4 because the code space of Unicode were limited to a 21-bit value.

注記: If this name is used in the encoding conversion facility, the converter attempts to identify by the preceding BOM (byte order mark)in which endian the subsequent bytes are represented.

IANA文字セット登録名: UTF-32BE

依存する文字集合: Unicode

説明: See above

注記: In contrast to UTF-32, strings are always assumed to be in big endian form.

IANA文字セット登録名: UTF-32LE

依存する文字集合: Unicode

説明: See above

注記: In contrast to UTF-32, strings are always assumed to be in little endian form.

IANA文字セット登録名: UTF-16

依存する文字集合: Unicode

説明: Unicode Transformation Format of 16-bit unit width. It's worth a note that UTF-16 is no longer the same specification as UCS-2 because the surrogate mechanism has been introduced since Unicode 2.0 and UTF-16 now refers to a 21-bit code space.

注記: If this name is used in the encoding conversion facility, the converter attempts to identify by the preceding BOM (byte order mark)in which endian the subsequent bytes are represented.

IANA文字セット登録名: UTF-16BE

依存する文字集合: Unicode

説明: See above.

注記: In contrast to UTF-16, strings are always assumed to be in big endian form.

IANA文字セット登録名: UTF-16BE

依存する文字集合: Unicode

説明: See above.

注記: In contrast to UTF-16, strings are always assumed to be in big endian form.

IANA文字セット登録名: UTF-8

依存する文字集合: Unicode / UCS

説明: Unicode Transformation Format of 8-bit unit width.

注記: none

IANA文字セット登録名: UTF-7

依存する文字集合: Unicode

説明: A mail-safe transformation format of Unicode, specified in RFC2152.

注記: none

IANA文字セット登録名: (none)

依存する文字集合: Unicode

説明: A variant of UTF-7 which is specialized for use in the IMAP protocol.

注記: none

IANA文字セット登録名: US-ASCII (preferred MIME name) / iso-ir-6 / ANSI_X3.4-1986 / ISO_646.irv:1991 / ASCII / ISO646-US / us / IBM367 / CP367 / csASCII

依存する文字集合: ASCII / ISO 646

説明: American Standard Code for Information Interchange is a commonly-used 7-bit encoding. Also standardized as an international standard, ISO 646.

注記: (none)

IANA文字セット登録名: EUC-JP (preferred MIME name) / Extended_UNIX_Code_Packed_Format_for_Japanese / csEUCPkdFmtJapanese

依存する文字集合: Compound of US-ASCII / JIS X0201:1997 (hankaku kana part) / JIS X0208:1990 / JIS X0212:1990

説明: As you see the name is derived from an abbreviation of Extended UNIX Code Packed Format for Japanese, this encoding is mostly used on UNIX or alike platforms. The original encoding scheme, Extended UNIX Code, is designed on the basis of ISO 2022.

注記: The character set referred to by EUC-JP is different to IBM932 / CP932, which are used by OS/2® and Microsoft® Windows®. For information interchange with those platforms, use EUCJP-WIN instead.

IANA文字セット登録名: Shift_JIS (preferred MIME name) / MS_Kanji / csShift_JIS

依存する文字集合: Compound of JIS X0201:1997 / JIS X0208:1997

説明: Shift_JIS was developed in early 80's, at the time personal Japanese word processors were brought into the market, in order to maintain compatiblities with the legacy encoding scheme JIS X 0201:1976. According to the IANA definition the codeset of Shift_JIS is slightly different to IBM932 / CP932. However, the names "SJIS" / "Shift_JIS" are often wrongly used to refer to these codesets.

注記: For the CP932 codemap, use SJIS-WIN instead.

IANA文字セット登録名: (none)

依存する文字集合: Compound of JIS X0201:1997 / JIS X0208:1997 / IBM extensions / NEC extensions

説明: While this "encoding" uses the same encoding scheme as EUC-JP, the underlying character set is different. That is, some code points map to different characters than EUC-JP.

注記: none

IANA文字セット登録名: Windows-31J / csWindows31J

依存する文字集合: Compound of JIS X0201:1997 / JIS X0208:1997 / IBM extensions / NEC extensions

説明: While this "encoding" uses the same encoding scheme as Shift_JIS, the underlying character set is different. That means some code points map to different characters than Shift_JIS.

注記: (none)

IANA文字セット登録名: ISO-2022-JP (preferred MIME name) / csISO2022JP

依存する文字集合: US-ASCII / JIS X0201:1976 / JIS X0208:1978 / JIS X0208:1983

説明: RFC1468

注記: (none)

IANA文字セット登録名: JIS

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-1

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-2

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-3

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-4

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-5

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-6

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-7

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-8

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-9

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-10

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-13

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-14

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-8859-15

依存する文字集合:

説明:

注記:

IANA文字セット登録名: byte2be

依存する文字集合:

説明:

注記:

IANA文字セット登録名: byte2le

依存する文字集合:

説明:

注記:

IANA文字セット登録名: byte4be

依存する文字集合:

説明:

注記:

IANA文字セット登録名: byte4le

依存する文字集合:

説明:

注記:

IANA文字セット登録名: BASE64

依存する文字集合:

説明:

注記:

IANA文字セット登録名: HTML-ENTITIES

依存する文字集合:

説明:

注記:

IANA文字セット登録名: 7bit

依存する文字集合:

説明:

注記:

IANA文字セット登録名: 8bit

依存する文字集合:

説明:

注記:

IANA文字セット登録名: EUC-CN

依存する文字集合:

説明:

注記:

IANA文字セット登録名: CP936

依存する文字集合:

説明:

注記:

IANA文字セット登録名: HZ

依存する文字集合:

説明:

注記:

IANA文字セット登録名: EUC-TW

依存する文字集合:

説明:

注記:

IANA文字セット登録名: CP950

依存する文字集合:

説明:

注記:

IANA文字セット登録名: BIG-5

依存する文字集合:

説明:

注記:

IANA文字セット登録名: EUC-KR

依存する文字集合:

説明:

注記:

IANA文字セット登録名: UHC (CP949)

依存する文字集合:

説明:

注記:

IANA文字セット登録名: ISO-2022-KR

依存する文字集合:

説明:

注記:

IANA文字セット登録名: Windows-1251 (CP1251)

依存する文字集合:

説明:

注記:

IANA文字セット登録名: Windows-1252 (CP1252)

依存する文字集合:

説明:

注記:

IANA文字セット登録名: CP866 (IBM866)

依存する文字集合:

説明:

注記:

IANA文字セット登録名: KOI8-R

依存する文字集合:

説明:

注記:

目次
mb_convert_case -- 文字列に対してケースフォルディングを行う
mb_convert_encoding -- 文字エンコーディングを変換する
mb_convert_kana --  カナを("全角かな"、"半角かな"等に)変換する
mb_convert_variables -- 変数の文字コードを変換する
mb_decode_mimeheader -- MIME ヘッダフィールドの文字列をデコードする
mb_decode_numericentity --  HTML数値エンティティを文字にデコードする
mb_detect_encoding -- 文字エンコーディングを検出する
mb_detect_order --  文字エンコーディング検出順序の設定/取得
mb_encode_mimeheader -- MIMEヘッダの文字列をエンコードする
mb_encode_numericentity --  文字をHTML数値エンティティにエンコードする
mb_ereg_match -- マルチバイト文字列が正規表現に一致するか調べる
mb_ereg_replace -- マルチバイト文字列に正規表現による置換を行う
mb_ereg_search_getpos --  次の正規表現検索を開始する位置を取得する
mb_ereg_search_getregs --  マルチバイト文字列が正規表現に一致する部分があるか調べる
mb_ereg_search_init --  マルチバイト正規表現検索用の文字列と正規表現を設定する
mb_ereg_search_pos --  指定したマルチバイト文字列が正規表現に一致する部分の位置と長さを返 す
mb_ereg_search_regs --  指定したマルチバイト文字列が正規表現に一致する部分を取得する
mb_ereg_search_setpos --  次の正規表現検索を開始する位置を設定する
mb_ereg_search --  指定したマルチバイト文字列が正規表現に一致するか調べる
mb_ereg -- マルチバイト文字列に正規表現マッチを行う
mb_eregi_replace --  マルチバイト文字列に大文字小文字を区別せずに正規表現による置換を行う
mb_eregi --  マルチバイト文字列に大文字小文字を区別しない正規表現マッチを行う
mb_get_info -- mbstringの内部設定値を取得する
mb_http_input -- HTTP 入力文字エンコーディングの検出
mb_http_output -- HTTP 出力文字エンコーディングの設定/取得
mb_internal_encoding --  内部文字エンコーディングの設定/取得
mb_language --  カレントの言語を設定/取得
mb_list_encodings --  Returns an array of all supported encodings
mb_output_handler --  出力バッファ内で文字エンコーディングを変換するコールバック関数
mb_parse_str --  GET/POST/COOKIEデータをパースし、グローバル変数を設定する
mb_preferred_mime_name -- MIME文字設定を文字列で得る
mb_regex_encoding --  カレントの正規表現用のエンコーディングを文字列として返す
mb_regex_set_options --  マルチバイト正規表現関数のデフォルトオプションを取得または設定する
mb_send_mail --  エンコード変換を行ってメールを送信する
mb_split -- マルチバイト文字列を正規表現により分割する
mb_strcut -- 文字列の一部を得る
mb_strimwidth -- 指定した幅で文字列を丸める
mb_strlen -- 文字列の長さを得る
mb_strpos --  文字列の中に指定した文字列が最初に現れる位置を見つける
mb_strrpos --  文字列の中に指定した文字列が最後に現れる位置を見つける
mb_strtolower -- 文字列を小文字にする
mb_strtoupper -- 文字列を大文字にする
mb_strwidth -- 文字列の幅を返す
mb_substitute_character -- 置換文字の設定/入手
mb_substr_count -- 副文字列の出現関数を数える
mb_substr -- 文字列の一部を得る