Warning: Undefined variable $type in /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php on line 3

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/includes/json/FormatJson.php on line 297

Warning: Trying to access array offset on value of type bool in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 660

Warning: session_name(): Session name cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 834

Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 126

Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 127

Warning: session_cache_limiter(): Session cache limiter cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 133

Warning: session_set_save_handler(): Session save handler cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 140

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/languages/LanguageConverter.php on line 773

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 294

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 300

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
http:///mymemo.xyz/wiki/api.php?action=feedcontributions&user=111.239.37.196&feedformat=atom miniwiki - 利用者の投稿記録 [ja] 2024-04-19T05:15:50Z 利用者の投稿記録 MediaWiki 1.31.0 UTF-8 2019-03-11T18:46:12Z <p>111.239.37.196: </p> <hr /> <div>{{複数の問題<br /> | 精度 = 2013年9月<br /> | 正確性 = 2013年9月<br /> }}<br /> {{Table Unicode}}<br /> &#039;&#039;&#039;UTF-8&#039;&#039;&#039;(ユーティーエフはち、ユーティーエフエイト)は[[ISO/IEC 10646]] (UCS) と[[Unicode]]で使える8ビット符号単位の[[文字符号化方式|文字符号化形式及び文字符号化スキーム]]。<br /> <br /> 正式名称は、ISO/IEC 10646では “UCS Transformation Format 8”、Unicodeでは “Unicode Transformation Format-8” という。両者はISO/IEC 10646とUnicodeのコード重複範囲で互換性がある。[[Request for Comments|RFC]]にも仕様がある&lt;ref&gt;[http://tools.ietf.org/html/rfc3629 RFC 3629] UTF-8, a transformation format of ISO 10646&lt;/ref&gt;。<br /> <br /> 2バイト目以降に「/」などの[[ASCII]]文字が現れないように工夫されていることから、&#039;&#039;&#039;UTF-FSS&#039;&#039;&#039; (File System Safe) ともいわれる。旧名称はUTF-2。<br /> <br /> UTF-8は、データ交換方式・ファイル形式として一般的に使われる傾向にある。<br /> &lt;!--<br /> データ交換形式やファイル形式に最も採用されている文字符号化方式である。<br /> ↑これが言いたいことなんだろうけど,出典なし。<br /> --&gt;<br /> <br /> 当初は、[[ベル研究所]]において[[Plan 9 from Bell Labs|Plan 9]]で用いるエンコードとして、[[ロブ・パイク]]による設計指針のもと、[[ケン・トンプソン]]によって考案された&lt;ref&gt;[http://tools.ietf.org/html/rfc3629#page-3 RFC 3629 Page-3]&lt;/ref&gt;&lt;ref&gt;[http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt Rob Pike&#039;s UTF-8 history]&lt;/ref&gt;。<br /> <br /> == エンコード体系 ==<br /> [[ASCII]]文字と互換性を持たせるために、ASCIIと同じ部分は1バイト、その他の部分を2-6バイトで符号化する。4バイトのシーケンスでは21bit (0x1FFFFF) まで表現することができるが、Unicodeの範囲外となる17面以降を表すもの(U+10FFFFより大きなもの)は受け付けない。また5-6バイトの表現は、ISO/IEC 10646による定義&lt;ref&gt;[http://std.dkuug.dk/jtc1/sc2/wg2/ ISO/IEC 10646:2003] Information technology -- Universal Multiple-Octet Coded Character Set (UCS)&lt;/ref&gt;と[[Internet Engineering Task Force|IETF]]によるかつての定義&lt;ref&gt;RFC 2279 UTF-8, a transformation format of ISO 10646&lt;/ref&gt;で、Unicodeの範囲外を符号化するためにのみ使用するが、Unicodeによる定義&lt;ref&gt;[http://www.unicode.org/versions/Unicode5.2.0/ The Unicode Standard, Version 5.2]&lt;/ref&gt;とIETFによる最新の定義&lt;ref&gt;RFC 3629 UTF-8, a transformation format of ISO 10646&lt;/ref&gt;では、5-6バイトの表現は不正なシーケンスである。<br /> <br /> ビットパターンは以下のようになっている。<br /> {| class=&quot;wikitable&quot; style=&quot;white-space: nowrap; font-size: small;&quot;<br /> |-<br /> ! Unicode<br /> ! colspan=&quot;6&quot; | ビット列<br /> ! colspan=&quot;6&quot; | バイト列<br /> ! 有効ビット<br /> ! バイト数<br /> |-<br /> | U+0000 … U+007F<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 0xxxxxxx<br /> | colspan=&quot;5&quot; rowspan=&quot;3&quot; | <br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 00-7F<br /> | colspan=&quot;5&quot; rowspan=&quot;3&quot; | <br /> | rowspan=&quot;3&quot; style=&quot;text-align: center;&quot; | {{0}}7 bit<br /> | rowspan=&quot;3&quot; style=&quot;text-align: center;&quot; | 1<br /> |-<br /> | (min) U+0000<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 0000000<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 00<br /> |-<br /> | (max) U+007F<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 1111111<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 7F<br /> |-<br /> | U+0080 … U+07FF<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 110yyyyx<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 10xxxxxx<br /> | colspan=&quot;4&quot; rowspan=&quot;3&quot; | <br /> | style=&quot;text-align: center; font-family: monospace;&quot; | C2-DF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80-BF<br /> | colspan=&quot;4&quot; rowspan=&quot;3&quot; | <br /> | rowspan=&quot;3&quot; style=&quot;text-align: center;&quot; | 11 bit<br /> | rowspan=&quot;3&quot; style=&quot;text-align: center;&quot; | 2<br /> |-<br /> | (min) U+0080<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 00010<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 000000<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | C2<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80<br /> |-<br /> | (max) U+07FF<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 11111<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 111111<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | DF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | BF<br /> |-<br /> | U+0800 … U+FFFF<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 1110yyyy<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 10yxxxxx<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 10xxxxxx<br /> | colspan=&quot;3&quot; rowspan=&quot;3&quot; | <br /> | style=&quot;text-align: center; font-family: monospace;&quot; | E0-EF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80-BF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80-BF<br /> | colspan=&quot;3&quot; rowspan=&quot;3&quot; | <br /> | rowspan=&quot;3&quot; style=&quot;text-align: center;&quot; | 16 bit<br /> | rowspan=&quot;3&quot; style=&quot;text-align: center;&quot; | 3<br /> |-<br /> | (min) U+0800<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 0000<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 100000<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 000000<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | E0<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | A0<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80<br /> |-<br /> | (max) U+FFFF<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 1111<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 111111<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 111111<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | EF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | BF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | BF<br /> |-<br /> | U+10000 … U+1FFFFF<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 11110yyy<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 10yyxxxx<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 10xxxxxx<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 10xxxxxx<br /> | colspan=&quot;2&quot; rowspan=&quot;3&quot; | <br /> | style=&quot;text-align: center; font-family: monospace;&quot; | F0-F7<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80-BF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80-BF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80-BF<br /> | colspan=&quot;2&quot; rowspan=&quot;3&quot; | <br /> | rowspan=&quot;3&quot; style=&quot;text-align: center;&quot; | 21 bit<br /> | rowspan=&quot;3&quot; style=&quot;text-align: center;&quot; | 4<br /> |-<br /> | (min) U+10000<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 000<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 010000<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 000000<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 000000<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | F0<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 90<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | 80<br /> |-<br /> | (max) U+1FFFFF<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 111<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 111111<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 111111<br /> | style=&quot;text-align: right; font-family: monospace;&quot; | 111111<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | F7<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | BF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | BF<br /> | style=&quot;text-align: center; font-family: monospace;&quot; | BF<br /> |}<br /> <br /> Unicodeの符号位置を2進表記したものを、上のビットパターンのx, yに右詰めに格納する。最短のバイト数で符号化するため、yの部分には最低1回は1が出現する。符号化されたバイト列は、[[エンディアン|バイト順]]に関わらず左から順に出力する。これにより4バイトで21bit、6バイトで31bitまで表現することができる。<br /> <br /> 1バイト目の先頭の連続するビット &quot;1&quot;(その後にビット &quot;0&quot; が1つ付く)の個数で、その文字のバイト数がわかるようになっている。また、2バイト目以降はビットパターン &quot;10&quot; で始まり、1バイト目と2バイト目以降では値の範囲が重ならないので、文字境界を確実に判定できる。すなわち、任意のバイトの先頭ビットが &quot;0&quot; なら1バイト文字、&quot;10&quot; なら2バイト以上の文字の2番目以降のバイト、&quot;110&quot; なら2バイト文字の先頭バイト、&quot;1110&quot; なら3バイト文字の先頭バイト、&quot;11110&quot; なら4バイト文字の先頭バイトであると判定できる。<br /> <br /> 7バイト以上の文字は規定されないため、&lt;code&gt;0xFE、0xFF&lt;/code&gt;は使用されない。このため、[[バイトオーダーマーク|バイト順マーク]] (BOM) に&lt;code&gt;0xFEと0xFF&lt;/code&gt;を使用するUTF-16やUTF-32が、UTF-8と混同されることはない。<br /> <br /> == 特徴 ==<br /> === メリット ===<br /> * バイトストリーム中の任意の位置から、その文字、前の文字、あるいは次の文字の先頭バイトを容易に判定することができる。<br /> * 文字列の検索を単なるバイト列の検索として行っても、文字境界と異なる個所でマッチしてしまうことがない。たとえば[[Shift_JIS]]で「¥」(0x5C) を検索すると「表」(0x95 0x5C) の2バイト目にマッチしたり、[[EUC-JP]]で「海」(0xB3 0xA4) を検索すると「ここ」(0xA4 0xB3 0xA4 0xB3) にマッチしたりするのと同様のことが起きない。このため、[[マルチバイト文字]]を意識せず、[[ISO/IEC 8859-1|ISO 8859-1]]などの8bit文字向けに作られた膨大なプログラム資産を、比較的少ない修正で再利用できる。<br /> ** ただし、他のUnicodeの符号化と同様に、単にバイト列の比較では文字列が同一か判断できない場合がある。詳細は、[[Unicodeの等価性]]及び[[Unicode正規化|正規化]]を参照のこと。<br /> * [[UTF-16]]や[[UTF-32]]と異なり、バイト単位の入出力を行うため、[[エンディアン|バイト順]]の影響がない。<br /> * 21bitまで表現できるため、[[サロゲートペア]]を使用する必要がない。<br /> * ASCII文字が主体の文書であれば、ほとんどデータサイズを増やさずにUnicodeのメリットを享受できる。UTF-16やUTF-32では、データサイズはほぼ2倍、4倍となる。<br /> * 複数のUTF-8文字列を、単なる符号なし8ビット整数の配列とみなして辞書順ソートした結果は、Unicodeの符号位置の辞書順のソート結果(すなわちUTF-32に変換した後にソートした結果)と等しくなる。これに対して、サロゲートペアを含むUTF-16文字列を符号なし16ビット整数の配列とみなしてソートした結果は、Unicodeの符号位置の辞書順のソート結果と異なりうる。<br /> <br /> === デメリット ===<br /> * UTF-8による符号化では、[[漢字]]や[[仮名 (文字)|仮名]]などの表現に3[[バイト (情報)|バイト]]を要する。このように、東アジアの従来文字コードでは[[マルチバイト文字|マルチバイト符号]]を用いて1文字2バイトで表現されていたデータが、1.5倍かそれ以上のサイズとなる。同様に、[[ISO/IEC 8859-1]]では1バイトで表現できた非ASCIIのラテン文字([[ウムラウト]]付きの文字など)も2バイトとなるし、その他の[[ISO/IEC 8859|ISO/IEC 8859シリーズ]]に属する文字符号ではデータ量がさらに増大しうる。<br /> ** なお、1バイトが9ビットである処理系では、この問題をあまり発生させずに符号化できるはずである。このアイディアに基づいた[[ジョークRFC]]がRFC 4042 “UTF-9” として[[2005年]]の[[エイプリルフール]]([[4月1日]])に公開された。<br /> * {{要検証範囲|date=2018年3月|文字数とデータサイズが比例しないため、文字数を調べるには先頭から全データを読み取る必要がある。}}ただし、Unicodeでは一部の文字を合成によって表現することもできるから(例:「ぱ」は、U+3071のほかにもU+306F U+309Aでも表現できる)、Unicodeを採用する場合、文字列の文字数をその文字列のバイト数から計算できないことは、UTF-8に限ったことではない。<br /> * 最短ではない符号やサロゲートペアなど、UTF-8の規格外だがチェックを行わないプログラムでは一見正常に扱われるバイト列が存在する。これらのバイト列を入力として受け入れてしまうと、プログラムが予期しない範囲のデータを生成するため、セキュリティ上の脅威となりうる&lt;ref&gt;RFC 3629, pp.9f.&lt;/ref&gt;。<br /> <br /> == サロゲートペアの扱い ==<br /> [[UTF-16]]では[[Unicode#サロゲートペア|サロゲートペア]]で表されるような、[[基本多言語面]]外の符号位置をUTF-8で表す時は、変換元がUTF-16でサロゲートペアの時には U+D800 ~ U+DBFF, U+DC00 ~ U+DFFF を表すUTF-8にそのまま変換したりはせず、U+10000 ~ U+10FFFF の符号位置にデコードしてから変換する。そのままUTF-8で符号化したような列は不正なUTF-8とされる。<br /> <br /> サロゲートペアのままUTF-8と同等の符号化を行う符号化は、&#039;&#039;&#039;CESU-8&#039;&#039;&#039; {{Lang|en|(Compatibility Encoding Scheme for UTF-16: 8-Bit)}} として別途定義されている。実用に供されている例としては、[[Oracle Database]]のバージョン8以前において、UTF-8として3オクテットまでのオクテット列しか扱えなかったために定義されたものである。本来のUTF-8における4オクテット列の代わりに、サロゲート符号位置を表す3オクテット列のペア(上位が ED A0 80 ~ ED AF BF、下位が ED B0 80 ~ ED BF BF)で表現される。<br /> <br /> 現在のOracle Databaseでも、CESU-8を「UTF8」として、「普通のUTF-8」を「AL32UTF8」として扱っているため注意を要する。[[MySQL]]でも「utf8」を指定した場合は4オクテット列が扱えず、CESU-8相当の符号化を必要とする(4オクテット列対応のUTF-8は「utf8mb4」として別途定義されているが、MySQL 5.5.3以降でないと使用できない&lt;ref&gt;[https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html 10.1.10.6 The utf8mb4 Character Set (4-Byte UTF-8 Unicode Encoding)] - MySQL 5.5 Reference Manual&lt;/ref&gt;)。<br /> <br /> また、[[Java]]の一部の内部実装で用いられている&#039;&#039;&#039;Modified UTF-8&#039;&#039;&#039;も、サロゲートペアをそのまま残す仕様となっている。ただし、NULL文字を&lt;code&gt;C0 80&lt;/code&gt;とエンコードする(これもUTF-8規格外)点で、CESU-8とも異なる実装となっている。<br /> <br /> == セキュリティ ==<br /> UTF-8のエンコード体系には[[冗長性 (情報理論)|冗長性]]があり、同じ文字を符号化するのに複数の表現が考えられる(例: スラッシュ記号である「/」を 0x2F という1バイトで表現するのではなく、0xC0 0xAF という2バイトもしくはそれより大きなバイト数で表現する)。かつてはそのような表現も許容されていたが、[[ディレクトリトラバーサル]]などの対策として行われる文字列検査を冗長な表現によりすり抜ける手法が知られるようになったため、現在の仕様では最も短いバイト数による表現以外は不正なUTF-8シーケンスとみなさなければならない&lt;ref&gt;Windowsにおける有名な[[ワーム (コンピュータ)|ワーム]]である[[Nimda|Nimdaウイルス]]は、[[Internet Information Services|IIS]]におけるUTF-8の脆弱性をもちいたものである。{{Harv|はせがわようすけ|2009}}&lt;/ref&gt;。<br /> <br /> ISO/IEC 10646の定義が5バイト以上の表現を許容していることにより、正しくない実装を行った[[バグ]]のあるシステムにおいてエンコード時に[[バッファオーバーフロー]]が発生する可能性も指摘されている。<br /> <br /> == 文字種 ==<br /> {| class=&quot;wikitable&quot;<br /> ! B !! Unicode !! スクリプト !! [[JIS X 0201]] !! [[JIS X 0208]] !! [[JIS X 0212]] !! [[JIS X 0213]]<br /> |-<br /> | 1 || U+0000 - U+007F || [[ASCII]] || Roman([[円記号]]・[[オーバーライン]]以外) || - || - || -<br /> |-<br /> | 2 || U+0080 - U+07FF || [[ラテン文字|ラテン]]、[[ダイアクリティカルマーク|ダイアクリティカル]]、[[ギリシャ文字|ギリシャ]]、&lt;br /&gt;[[キリール文字|キリール]]、[[アルメニア文字|アルメニア]]、[[ヘブライ文字|ヘブライ]]、[[アラビア文字|アラビア]]、&lt;br /&gt;[[シリア文字|シリア]]、[[ターナ文字|ターナ]]、[[ンコ文字|ンコ]] || 円記号 || 非漢字の一部 || 非漢字の一部 || 非漢字の一部<br /> |-<br /> | 3 || U+0800 - U+FFFF || [[アブギダ|インド系諸文字]]、[[句読点]]、[[学術記号]]、&lt;br /&gt;[[絵文字]]、[[東アジア]]の諸文字、[[全角と半角|全角半角形]]など || オーバーライン、Kana || 残りの全て || 残りの全て || 大半<br /> |-<br /> | 4 || U+10000 - U+1FFFFF || [[古代文字]]、3に含まれない漢字 || - || - || - || 第3・第4水準漢字の一部<br /> |}<br /> <br /> == バイト順マークの使用について ==<br /> UTF-8で符号されたテキストデータは[[エンディアン]]に関わらず同じ内容になるので、[[バイトオーダーマーク|バイト順マーク]] (BOM) は必要ない。しかし、テキストデータがUTF-8で符号化されていることの標識として、データの先頭にEF BB BF(16進。UCSでのバイト順マークU+FEFFのUTF-8での表現)を付加することが許される。一部のテキスト処理アプリケーション(エディタなど)がこのような動作をする([[TeraPad]]、[[EmEditor]]エディタのように付加するかどうかを選択できるものもある)。<br /> <br /> なお、日本の特殊事情として、このシーケンスがある方を&#039;&#039;&#039;UTF-8&#039;&#039;&#039;、ない方を特に&#039;&#039;&#039;UTF-8N&#039;&#039;&#039;と呼ぶこともある&lt;ref&gt;{{Cite web |url=http://www-128.ibm.com/developerworks/library/utfencodingforms/index.html |archiveurl=http://web.archive.org/web/20050506211548/http://www-128.ibm.com/developerworks/library/utfencodingforms/index.html| accessdate=18 September 2013 | archivedate=6 May 2005 |language=英語 |author=Mark Davis |publisher=[[IBM]] |title=Forms of Unicode}}&lt;/ref&gt;が、このような呼び分けは日本以外ではほとんど知られておらず、また公的規格などによる裏付けもない&lt;ref&gt;このため、UTF-8という呼び名を使っていれば情報交換の相手が文書先頭にこのシーケンスがあると見なすと期待すべきではないし、また、UTF-8Nという呼び名は情報交換の際に用いるべきではない。&lt;/ref&gt;。<br /> <br /> このシーケンスを通常の文字と認識するプログラムでは、先頭に余分なデータがあるとみなされて問題となることがある。例えば、[[Unix系]]OSにおける実行可能[[スクリプト言語|スクリプト]]は、ファイル先頭が「[[シバン (Unix)|#!]]」から始まるとき、それに続く文字列を[[インタプリタ]]のコマンドとして認識するが、多くのシステムでは、このシーケンスが存在するとこの機能が働かず実行できない。PHPでは、&lt;?PHPの前に出力されるため、header()関数の実行に失敗する原因となる。<br /> <br /> 逆にこのシーケンスがないとUTF-8と認識できないプログラムも存在する。とくにASCII部以外の文字が少ない場合に誤認することが多い(たとえば、[[Microsoft Excel]]では、[[Comma-Separated Values|CSVファイル]]を開くとき、このシーケンスが付加されていないUTF-8の場合は正常に読み込むことができない&lt;ref&gt;{{Cite web |date=2010-01-07 |url=http://okwave.jp/qa/q5574877.html |title=ExcelでUTF-8の csvデータを表示するには |publisher=[[OKWave]]|accessdate=2014-09-10}} や、{{Cite journal|和書|url=http://mism.blog13.fc2.com/blog-entry-202.html |title=UTF-8で文字化け回避してCSV出力する方法&quot;|format=[[ブログ]] |author =えむ |journal =エムイズム - つぶやきブログ |date=2007-03-15}} を参照。&lt;/ref&gt;。[[Microsoft Windows]]に付属する[[メモ帳]]、[[ワードパッド]]も同様。)。<br /> <br /> プロトコルが常にUTF-8である事を強制しているものである場合はこのシーケンスを禁止するべきで、この場合ファイル先頭にこのシーケンスが現れると “ZERO WIDTH NO-BREAK SPACE” と見なされる。逆にプロトコルがそれを保証しない場合このシーケンスは禁止されずファイル先頭のそれはバイト順マークと見なされる&lt;ref&gt;RFC 3629 [http://tools.ietf.org/html/rfc3629#section-6 6. Byte order mark (BOM)]&lt;/ref&gt;。<br /> <br /> == 脚注 ==<br /> {{脚注ヘルプ}}<br /> {{Reflist|2}}<br /> <br /> == 参考資料 ==<br /> {{Refbegin}}<br /> *用語の日本語表記は原則として「{{Cite web | url = http://www.unicode.org/terminology/term_en_ja.html | title = Unicode Terminology English - Japanese | publisher = Unicode, Inc | accessdate = 2010-01-01}}」にならった。<br /> *{{Cite web |author=はせがわようすけ |date=2009-05-08 |url=http://gihyo.jp/admin/serial/01/charcode/0004 |title=本当は怖い文字コードの話: 第4回 UTF-8の冗長なエンコード |publisher=技術評論社 |accessdate=2014-09-10}}<br /> {{Refend}}<br /> == 関連項目 ==<br /> *[[文字コード]]<br /> <br /> {{文字コード}}<br /> {{ロブ・パイク}}<br /> {{ケン・トンプソン}}<br /> <br /> {{DEFAULTSORT:UTF-08}}<br /> [[Category:文字コード]]<br /> [[Category:Unicode]]<br /> [[Category:RFC|2044]]</div> 111.239.37.196
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46