iconv(アイコンブ)は異なる文字コード間の相互変換を行う標準API。または、そのAPIに付属する文字コード変換ユーティリティプログラム。名前は「International Codeset Conversion Library」に由来する[1]。GNUによる実装[2]が有名で、変換ライブラリ libiconv のライセンスはLGPL、変換プログラム iconv のライセンスはGPLである。 iconvのAPIは、おもにUNIX環境で文字列の文字コード変換を行う標準インタフェースである。iconvは最初HP-UXで開発され、後にPOSIX規格として標準化された。そのため、ほとんどのUnix系のシステムで使用できる。 iconv APIは文字コード変換プログラムのほか、既存のプログラムを国際化または多言語化するためにも用いられる。例えば、Sambaの国際化にはiconvが利用されている。 XML処理用ライブラリであるlibxml Microsoft Windows上では、CygwinやGnuWin32
iconv API
互換性
プログラミング言語の標準ライブラリにAPIが組み込まれている場合がある。
PHP
PHPスクリプトからiconvの機能を利用することができる(WindowsのPHPでも付属のDLL (iconv.dll
GNU Cライブラリのiconvでは2019年5月現在のところ、EUC-JP、EUC-JIS X0213、Shift_JIS、Shift_JIS X0213、CP932、ISO-2022-JP、ISO-2022-JP-2、ISO-2022-JP-1、ISO-2022-JP-MS
、ISO-2022-JP-3等の日本語の文字コードに対応している[2]。また、UnicodeのエンコーディングであるUTF-8、UTF-16、UTF-32、UTF-7にも対応している[2]。古くから使用されているnkfと異なり、多くの環境で標準的に使用できるが、一部の文字でnkfと変換結果が異なる点で注意を要する。また、nkfに存在するエンコードの自動検出機能は存在しない。 特に意識していなくても、多くの非英語環境向けのUNIXプログラムの内部で間接的に使用されているが、もちろんユーザが明示的に使用することもできる。 ここでは、Shift_JISのテキストファイルsjis.txtを、UTF-8に変換し、utf8.txtとして保存する場合のコマンドの例を示す。 次のコマンドを実行することで変換できる。iconv -f Shift_JIS -t UTF-8 sjis.txt > utf8.txt 次の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;}
使用例
シェルからiconvコマンドで変換する場合
自作プログラムからiconvライブラリを使用し変換する場合
脚注[脚注の使い方]^ ⇒Tru64 UNIX worldwide language support
^ a b c GNU libiconv
外部リンク
コマンド
iconv(1) man page(SunOS リファレンスマニュアル)
iconv(1)
ライブラリ・ルーチン
iconv(3)
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