Man page - utf-8(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr pt_BR es it pl cs ja ru ro zh_TW zh_CN deManual
UTF-8
名 前説 明
性 質
符 号 化
例
ア プ リ ケ ー シ ョ ン に お け る 注 意
セ キ ュ リ テ ィ
標 準
関 連 項 目
こ の 文 書 に つ い て
名 前
UTF-8 - ASCII と 互 換 性 の あ る 多 バ イ ト Unicode の 符 号 化
説 明
ユ ニ コ ー ド (Unicode) 3.0 文 字 集 合 は 16 ビ ッ ト の コ ー ド 空 間 を 占 め る 。 最 も 単 純 な Unicode の 符 号 化 方 法 (UCS-2) で は 、 文 字 は 16 ビ ッ ト ワ ー ド (16 ビ ッ ト 文 字 の 列 ) で 構 成 さ れ る 。 こ の 列 に は 、 '\0' や '/' の よ う な (フ ァ イ ル 名 や C の ラ イ ブ ラ リ 関 数 の 引 数 の 内 部 で ) 特 殊 な 意 味 を 持 つ 16 ビ ッ ト 文 字 が 含 ま れ る こ と が あ る 。 さ ら に 、 ほ と ん ど の UNIX ツ ー ル は ASCII フ ァ イ ル を 入 力 と し て 期 待 す る の で 、 大 幅 な 変 更 な し に は 16 ビ ッ ト ワ ー ド を 文 字 と し て 読 む こ と が で き な い 。 こ れ ら の 理 由 か ら 、 UCS-2 は フ ァ イ ル 名 ・ テ キ ス ト フ ァ イ ル ・ 環 境 変 数 な ど に 用 い る 、 外 部 用 の Unicode 符 号 と し て は 不 適 切 で あ る 。 Unicode の ス ー パ ー セ ッ ト で あ る ISO 10646 Universal Character Set (UCS) は \(em 31 ビ ッ ト の よ う な \(em も っ と 大 き な コ ー ド 空 間 を 占 め る が 、 そ の 最 も 単 純 な 符 号 化 で あ る UCS-4 に も (32 ビ ッ ト ワ ー ド の 列 と し て ) 同 じ 問 題 が あ る 。
Unicode と UCS の UTF-8 符 号 化 に は こ れ ら の 問 題 が な い の で 、 UNIX 形 式 の OS 上 で Unicode 文 字 集 合 を 使 用 す る た め の 一 般 的 な 方 法 と な っ て い る 。
性 質
UTF-8 符 号 化 は 以 下 の よ う な 素 晴 し い 性 質 を 備 え て い る :
|
* |
UCS 文 字 の う ち 0x00000000 か ら 0x0000007f ま で (古 典 的 な US-ASCII の 文 字 ) は (ASCII と の 互 換 性 の た め に ) 単 純 に 0x00 か ら 0x7f の バ イ ト に 符 号 化 す る 。 こ れ は 7 ビ ッ ト ASCII 文 字 の み を 含 む フ ァ イ ル や 文 字 列 に 関 し て は 、 ASCII と UTF-8 で 同 じ 符 号 化 を 行 な う こ と を 意 味 す る 。 |
||
|
* |
0x7f よ り 大 き い の す べ て の UCS 文 字 は 、 0x80 か ら 0xfd ま で の 範 囲 の バ イ ト の み を 含 む 多 バ イ ト 文 字 列 に 符 号 化 さ れ る 。 し た が っ て 文 字 列 に ASCII バ イ ト が 含 ま れ る こ と が な く 、 '\0' や '/' の 問 題 は 発 生 し な い 。 |
||
|
* |
UCS-4 文 字 列 で は 辞 書 的 ソ ー ト の 順 序 が 保 た れ る 。 |
||
|
* |
2ˆ31 ビ ッ ト の す べ て の UCS コ ー ド が UTF-8 を 使 用 し て 符 号 化 で き る 。 |
||
|
* |
UTF-8 符 号 化 で は バ イ ト 0xc0, 0xc1, 0xfe, 0xff が 使 用 さ れ る こ と は な い 。 |
||
|
* |
ASCII で な い UCS 文 字 の 多 バ イ ト 列 の 最 初 の バ イ ト は 、 常 に 0xc2 か ら 0xfd の 範 囲 で 表 現 さ れ 、 そ の 文 字 が 何 バ イ ト で 構 成 さ れ て い る か を 示 す 。 多 バ イ ト 列 の 残 り の 部 分 の バ イ ト は 、 そ れ ぞ れ 0x80 か ら 0xbf の 範 囲 に あ る 。 こ れ に よ り 同 期 が 容 易 に な り 、 ス テ ー ト レ ス な 符 号 化 が 可 能 に な り 、 バ イ ト の 紛 失 に 対 し て 堅 固 に な る 。 |
||
|
* |
UTF-8 を 使 用 し た UCS 文 字 の 符 号 化 は 最 大 6 バ イ ト の 長 さ に な る 。 し か し 、 Unicode 規 格 で は 0x10ffff よ り 先 の 文 字 を 指 定 し な い の で 、 Unicode 文 字 は UTF-8 で は 4 バ イ ト ま で に し か な ら な い 。 |
符 号 化
以
下 の バ イ ト 列
が 文 字 の 表 現
に 使 用 さ れ る
。 ど の バ イ ト
列 を 使 用 す る
か は 文 字 の UCS コ
ー ド 番 号 に 依
存 す る :
0x00000000 - 0x0000007F:
0 xxxxxxx
0x00000080 - 0x000007FF:
110 xxxxx 10 xxxxxx
0x00000800 - 0x0000FFFF:
1110 xxxx 10 xxxxxx 10 xxxxxx
0x00010000 - 0x001FFFFF:
11110 xxx 10 xxxxxx 10 xxxxxx 10 xxxxxx
0x00200000 - 0x03FFFFFF:
111110 xx 10 xxxxxx 10 xxxxxx 10 xxxxxx 10 xxxxxx
0x04000000 - 0x7FFFFFFF:
1111110 x 10 xxxxxx 10 xxxxxx 10 xxxxxx 10 xxxxxx 10 xxxxxx
xxx ビ ッ ト の 部 分 に は 2 進 数 表 現 の 文 字 コ ー ド の ビ ッ ト 部 分 が 対 応 す る 。 2 進 数 表 で は 最 上 位 ビ ッ ト (MSB) が 最 初 に 置 か れ る (big-endian)。 そ の 文 字 を 表 現 す る の に 最 も 短 い バ イ ト 列 の み が 使 用 で き る 。
0xd800–0xdfff (UTF-16 サ ロ ゲ ー ト ) や 0xfffe, 0xffff (UCS の noncharacter) と い う UCS コ ー ド の 値 は 、 UTF-8 に 準 拠 し た ス ト リ ー ム に 入 れ る べ き で は な い 。 RFC 3629 で は U+10FFFF よ り 上 の コ ー ド ポ イ ン ト は 使 用 す べ き で は な い と さ れ て い る 。 こ れ に よ り 、 文 字 は 4 バ イ ト 以 内 に 限 定 さ れ る 。
例
Unicode 文 字 の 0xa9 = 1010 1001 (コ ピ ー ラ イ ト マ ー ク ) は UTF-8 で 符 号 化 す る と 以 下 の よ う に な る 。
11000010 10101001 = 0xc2 0xa9
0x2260 = 0010 0010 0110 0000 (不 等 号 ) は 以 下 の 通 り 。
11100010 10001001 10100000 = 0xe2 0x89 0xa0
ア プ リ ケ ー シ ョ ン に お け る 注 意
ユ ー ザ ー は ア プ リ ケ ー シ ョ ン の UTF-8 サ ポ ー ト を 有 効 に す る た め に 、
export LANG=en_GB.UTF-8
の よ う に し て UTF-8 ロ ケ ー ル を 選 択 し な け れ ば な ら な い 。
使 用 さ れ て い る 文 字 符 号 化 を 分 か っ て い な け れ ば な ら な い ア プ リ ケ ー シ ョ ン ソ フ ト ウ ェ ア は 、 以 下 の よ う に し て 常 に ロ ケ ー ル を 設 定 す べ き で あ る 。
setlocale(LC_CTYPE, "")
ま た 、 プ ロ グ ラ マ ー は
strcmp(nl_langinfo(CODESET), "UTF-8") == 0
と い う 式 を 評 価 す る こ と で 、 UTF-8 ロ ケ ー ル が 選 択 さ れ て い て 、 プ レ ー ン テ キ ス ト の 標 準 入 出 力 ・ 端 末 間 通 信 ・ プ レ ー ン テ キ ス ト フ ァ イ ル の 内 容 ・ フ ァ イ ル 名 ・ 環 境 変 数 が UTF-8 で 符 号 化 さ れ て い る か を チ ェ ッ ク す る こ と が で き る 。
US-ASCII や ISO 8859 と い っ た シ ン グ ル バ イ ト の 符 号 化 が 習 慣 に な っ て い る プ ロ グ ラ マ ー は 、 こ れ ま で の 2 つ の 仮 定 が UTF-8 ロ ケ ー ル に お い て は 最 早 有 効 で は な く な っ た こ と を 知 っ て お く べ き だ 。 1 番 目 の 変 更 点 は 、 1 バ イ ト が 必 ず し も 1 つ の 文 字 に 対 応 し な い と い う 点 で あ る 。 2 番 目 の 変 更 点 は 、 最 近 の 端 末 エ ミ ュ レ ー タ は UTF-8 モ ー ド に お い て 中 国 語 ・ 日 本 語 ・ 韓 国 朝 鮮 語 の 全 角 文 字 や ス ペ ー ス が 入 ら な い (nonspacing) 合 成 文 字 (combining characters) に 対 応 し て い る の で 、 ASCII の と き の よ う に 1 文 字 出 力 し た 後 で カ ー ソ ル を 必 ず し も 1 つ だ け 進 め る わ け で は な い と い う 点 で あ る 。 今 日 で は 、 文 字 や カ ー ソ ル の 位 置 を 数 え る の に mbsrtowcs (3) や wcswidth (3) と い っ た ラ イ ブ ラ リ 関 数 を 使 う べ き で あ る 。
(VT100 端 末 な ど で 使 わ れ る ) ISO 2022 符 号 化 形 式 か ら UTF-8 へ 切 替 え る 公 式 な エ ス ケ ー プ シ ー ケ ン ス は ESC % G ("b%G") で あ る 。 こ れ に 対 応 す る UTF-8 か ら ISO 2022 へ の リ タ ー ン シ ー ケ ン ス は ESC % @ ("b%@") で あ る 。 (G0 セ ッ ト と G1 セ ッ ト を 切 替 え る と い っ た ) そ の 他 の ISO 2022 シ ー ケ ン ス は 、 UTF-8 モ ー ド で は 使 え な い 。
セ キ ュ リ テ ィ
Unicode と UCS の 規 格 で は 、 UTF-8 の 生 成 者 は で き る だ け 短 い 形 式 を 用 い る よ う 要 求 し て い る 。 例 え ば 、 先 頭 バ イ ト が 0xc0 で あ る よ う な 2 バ イ ト 列 を 生 成 す る の は 準 拠 し て い る と は い え な い 。 Unicode 3.1 で は 、 規 格 に 準 拠 す る プ ロ グ ラ ム は 最 短 の 表 現 形 式 で は な い 入 力 を 受 け 付 け な い 、 と い う 要 求 事 項 が 追 加 さ れ た 。 こ れ は セ キ ュ リ テ ィ 上 の 理 由 に よ る 。 ユ ー ザ ー 入 力 が セ キ ュ リ テ ィ 上 の 危 険 に 対 し チ ェ ッ ク さ れ る 場 合 、 プ ロ グ ラ ム は ASCII 版 の "/../" や ";" や "NUL" だ け を チ ェ ッ ク し 、 最 短 に 符 号 化 さ れ て な い こ れ ら の 文 字 を 見 過 ご し て し ま う か も し れ な い か ら で あ る 。 な ぜ な ら 、 最 短 で は な い UTF-8 符 号 化 で は 、 こ れ ら の 文 字 を 表 現 す る よ う な 様 々 な ASCII 以 外 の 形 式 が 存 在 す る た め で あ る 。
標 準
ISO/IEC 10646-1:2000, Unicode 3.1, RFC 3629, Plan 9.
関 連 項 目
locale (1), nl_langinfo (3), setlocale (3), charsets (7), unicode (7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。