Iconv
[Wikipedia|▼Menu]

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;}
脚注[脚注の使い方]^Tru64 UNIX worldwide language support
^ a b c GNU libiconv

外部リンク

コマンド

iconv(1)
man page(SunOS リファレンスマニュアル)

iconv(1) man page(HP-UX リファレンス:ユーザーコマンド p579)


ライブラリ・ルーチン

iconv(3) JM Project

iconv(3) man page(SunOS リファレンスマニュアル)

iconv(3C) man page(HP-UX リファレンス:ライブラリ p855)


オンライン版のiconvコマンド(英語)

GNUのCライブラリiconv(英語)










Unixコマンド
ファイルとファイルシステム管理

cat

chattr(英語版)

chmod

chown

chgrp

cksum

cmp

cp

dd

du

df(英語版)

file

fsck

fuser(英語版)

ln

ls

lsof

mkdir

mount

mv

pax

pwd

rm

rmdir

size

split

tee

touch

type(英語版)

umask(英語版)

プロセス管理

at

bg

chroot

cron

fg

kill

killall

nice

pgrep

pidof

pkill

ps

pstree(英語版)

reboot

shutdown

time

top

ユーザ管理/環境

clear

env

exit

finger

history(英語版)

id

logname(英語版)

mesg

passwd

su

sudo

uptime

talk

tput(英語版)

uname

w

wall

who

whoami

write

テキスト処理

awk

banner

basename

comm(英語版)

csplit(英語版)

cut

diff

dirname

ed

ex(英語版)

fmt

fold(英語版)

head

iconv

join(英語版)

less

m4

more

nkf

nl

paste(英語版)

patch

printf(英語版)

read(英語版)

sed

sort

spell(英語版)

strings


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:15 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef