Iconvとは? わかりやすく解説

iconv 関数

導入

このモジュールには、iconv による文字集合の変換機能へのインターフェースが含まれています。 このモジュールにより、ローカルな文字集合で表された文字列を、Unicode 文字集合のような 他の文字集合で表わされた文字列に変換することができます。 サポートされる文字集合は、使用するシステムの iconv の実装に依存します。 いくつかのシステムでは iconv 関数は意図した通りに動作しない可能性があることに注意してください。 この場合は、» GNU libiconv ライブラリをインストール すると良いでしょう。 このライブラリの出力は、多くの場合、より妥当なものとなります。
PHP 5.0.0以降、この拡張モジュールには、 多言語スクリプトを書く際に有用な種々のユーティリティが附属しています。 この新機能については、以下のセクションを参照してください。

要件

使用しているシステムが、最近のPOSIX対応システムのどれかである場合には、標準C 言語ライブラリの中にiconv機能が含まれているため、何かをする必要はありません。 そうでない場合は、 » libiconvライブラリを入手して使用する システムにインストールする必要があります。

インストール手順

この関数を使用するには、 PHPバイナリを以下のオプションを指定して 構築する必要があります。 --with-iconv[=DIR]
Windows® ユーザへの注意: Windows®環境でこのモジュールを有効にするには、 PHP/Win32バイナリパッケージに附属するiconv.dllまたは iconv-1.3.dll (4.2.1より前)という名前の DLLファイルを環境変数PATHで指定した ディレクトリまたは Windows® のシステムディレクトリにコピーする 必要があります。
このモジュールは、PHP 5 で PHP の一部として組み込まれました。 iconv.dllphp_iconv.dll は もはや必要ありません。

実行時設定

php.ini の設定により動作が変化します。
表 122. Iconv 設定オプション
名前デフォルト変更の可否変更履歴
iconv.input_encoding"ISO-8859-1"PHP_INI_ALLPHP 4.0.5 以降で使用可能です。
iconv.output_encoding"ISO-8859-1"PHP_INI_ALLPHP 4.0.5 以降で使用可能です。
iconv.internal_encoding"ISO-8859-1"PHP_INI_ALLPHP 4.0.5 以降で使用可能です。

PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。

警告
(IBM AIX のように)いくつかのシステムでは "ISO-8859-1" ではなく "ISO8859-1" を使用することがあります。そのような場合は、設定オプションや 関数のパラメータにはこの値を使用しなければなりません。

注意: 設定オプション iconv.input_encoding は、 今のところ一切利用されていません。

リソース型

リソース型は定義されていません。

定義済み定数

PHP 4.3.0以降、この拡張モジュールで使用される iconv 実装の種類を実行時に調べることができます。 表 123. iconv定数
名前説明
ICONV_IMPLstring実装の名前
ICONV_VERSIONstring実装のバージョン


注意: これらの定数を用いて実装に依存するスクリプトを書くことは全く推奨されません。
PHP 5.0.0以降、以下の定数も利用可能です。 表 124. PHP 5.0.0以降で利用可能なiconv定数
名前説明
ICONV_MIME_DECODE_STRICTintegericonv_mime_decode()で使用されるビットマスク
ICONV_MIME_DECODE_CONTINUE_ON_ERRORintegericonv_mime_decode()で使用されるビットマスク


参考

GNU Recode 関数も参照してください。

目次

iconv_get_encoding — iconv 拡張モジュールの内部設定変数を取得する
iconv_mime_decode_headers — 複数の MIME ヘッダフィールドを一度にデコードする
iconv_mime_decodeMIME ヘッダフィールドをデコードする
iconv_mime_encodeMIME ヘッダフィールドを作成する
iconv_set_encoding — 文字エンコーディング変換用の設定を行なう
iconv_strlen — 文字列の文字数を返す
iconv_strpos — 文字列が最初に現れる場所を見つける
iconv_strrpos — 文字列が最後に現れる場所を見つける
iconv_substr — 文字列の一部を切り出す
iconv — 文字列を指定した文字エンコーディングに変換する
ob_iconv_handler — 出力バッファハンドラとして文字エンコーディングを変換する

iconv

(PHP 4 >= 4.0.5, PHP 5)
iconv — 文字列を指定した文字エンコーディングに変換する

説明

string iconv ( string in_charset, string out_charset, string str )
文字列 str の文字セットを in_charset から out_charset に変換します。

パラメータ

in_charset
入力文字セット。
out_charset
出力文字セット。
文字列 //TRANSLITout_charset に追加すると、翻字機能が有効になります。これは、指定された文字集合で 表せない文字を、見た目の似ている別の文字に置き換える機能です。 文字列 //IGNORE を追加すると、指定された文字集合で 表せない文字は黙って切り捨てられます。 それ以外の場合は、str の中に変換できない文字が 出現した時点で変換が打ち切られます。
str
変換する文字列。

返り値

変換された文字列、あるいは失敗した場合に FALSE を返します。

例 889. iconv() の例
<?php
echo iconv("ISO-8859-1", "UTF-8", "This is a test.");
?>



iconv

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/30 06:02 UTC 版)

ナビゲーションに移動 検索に移動

iconv(アイコンブ)は異なる文字コード間の相互変換を行う標準API。または、そのAPIに付属する文字コード変換ユーティリティプログラム。名前は「International Codeset Conversion Library」に由来する[1]。GNUによる実装[2]が有名で、変換ライブラリ libiconv のライセンスはLGPL、変換プログラム iconv のライセンスはGPLである。

iconv API

iconvのAPIは、おもにUNIX環境で文字列の文字コード変換を行う標準インタフェースである。iconvは最初HP-UXで開発され、後にPOSIX規格として標準化された。そのため、ほとんどのUnix系のシステムで使用できる。

iconv APIは文字コード変換プログラムのほか、既存のプログラムを国際化または多言語化するためにも用いられる。例えば、Sambaの国際化にはiconvが利用されている。

互換性

XML処理用ライブラリであるlibxmlがiconvを必要としているため、libxmlを使用したアプリケーションソフトウェアを利用する場合にもiconvを必要とする。

Microsoft Windows上では、CygwinやGnuWin32等のUnixライクな環境をインストールすることで、iconv APIやiconvプログラムを利用できるようになる。

プログラミング言語の標準ライブラリにAPIが組み込まれている場合がある。

PHP
PHPスクリプトからiconvの機能を利用することができる(WindowsのPHPでも付属のDLL (iconv.dll)により利用可能)。
バージョン1.9以前のRuby
それ以降のバージョンではそのプラットフォーム依存性から非推奨扱いになっており、String#encodeを代替とする。

日本語の対応状況

GNU Cライブラリのiconvでは2019年5月現在のところ、EUC-JPEUC-JIS X0213Shift_JISShift_JIS X0213CP932ISO-2022-JPISO-2022-JP-2ISO-2022-JP-1、ISO-2022-JP-MS、ISO-2022-JP-3等の日本語の文字コードに対応している[2]。また、UnicodeのエンコーディングであるUTF-8UTF-16UTF-32UTF-7にも対応している[2]

古くから使用されているnkfと異なり、多くの環境で標準的に使用できるが、一部の文字でnkfと変換結果が異なる点で注意を要する。 また、nkfに存在するエンコードの自動検出機能は存在しない。

使用例

特に意識していなくても、多くの非英語環境向けのUNIXプログラムの内部で間接的に使用されているが、もちろんユーザが明示的に使用することもできる。

ここでは、Shift_JISのテキストファイルsjis.txtを、UTF-8に変換し、utf8.txtとして保存する場合のコマンドの例を示す。

シェルからiconvコマンドで変換する場合

次のコマンドを実行することで変換できる。

iconv -f Shift_JIS -t UTF-8 sjis.txt > utf8.txt

自作プログラムからiconvライブラリを使用し変換する場合

次のC言語ソースをコンパイルし、実行することで変換できる。

ただし、簡単のためエラー処理は省略しているので、このまま実用プログラムに使用しないこと。

#include <stdio.h>
#include <iconv.h>

#define S_SIZE (1024)

int main(void) {
  iconv_t icd;
  FILE *fp_src, *fp_dst;
  char s_src[S_SIZE], s_dst[S_SIZE];
  char *p_src, *p_dst;
  size_t n_src, n_dst;

  icd = iconv_open("UTF-8", "Shift_JIS");
  fp_src = fopen("sjis.txt", "r");
  fp_dst = fopen("utf8.txt", "w");

  while (1) {
    fgets(s_src, S_SIZE, fp_src);
    if (feof(fp_src))
      break;
    p_src = s_src;
    p_dst = s_dst;
    n_src = strlen(s_src);
    n_dst = S_SIZE-1;
    while (0 < n_src) {
      iconv(icd, &p_src, &n_src, &p_dst, &n_dst);
    }
    *p_dst = '\0';
    fputs(s_dst, fp_dst);
  }

  fclose(fp_dst);
  fclose(fp_src);
  iconv_close(icd);

  return 0;
}

脚注

[脚注の使い方]

外部リンク




固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Iconv」の関連用語

Iconvのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Iconvのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2025 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのiconv (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS