- 締切済み
UTF-8で5~6バイトになる文字コード
UnicodeのUTF-8で5~6バイトになる文字コードは、どのような場合でしょうか。(サロゲートペアのコードでも4バイトです。シフトJISから変換するとき、どのようなコードが5~6バイトに割り当てられるのでしょうか。) ご存知の方おられましたら、ご教示ください。
- Clara_a
- お礼率100% (3/3)
- その他(プログラミング・開発)
- 回答数3
- ありがとう数6
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
実は「UTF」には 2種類あります. つまり, Unicode Consortium による Unicode Transformation Format と ISO による UCS transformation format です. ややっこしいんですが, これは Unicode が ISO 10646 を乗っ取ったという歴史的事情によります. で, Unicode Consortium の UTF-8 ですが, これは昔から最大 4 octet です. あ, 本当の昔 (Unicode Standard 1 とか 2 とかの時代) は 16bit だったので最大 3 octet かな? u+10000 以上のコードポイントにも文字が割当てられるようになったので, 最大 4 octet に拡張されたのかもしれません. こっちは Unicode Standard 5.0 で確認済み. これに対して, もともと ISO 10646 では 31bit の文字セットを考えていました. そのため, ISO 10646 では UTF-8 として 1~6 byte のものが定義されています. ただ, wikipedia によれば 2006年に「Unicode で定義されないコードポイントには文字を割当てない」ということが決まった (amendment がまだ出ていないので未確認) ということで, そうなると実際に用いられるのはやはり 1~4 octet に限られることになると思います.
- noocyte
- ベストアンサー率58% (171/291)
UTF-8 には新旧があります. > 「UTF-8は1~6バイトです」 これは古い方の UTF-8 (RFC2279(廃),1998年1月). > 「Unicode値とUTF-8の関係」の表を見ると4バイトまで これが現行の UTF-8 (RFC3629,2003年11月).
お礼
Unicodeに歴史があり、規格が変わってきたことわかりました。 URLもとても参考になりました。 どうもありがとうございました。
- sakusaker7
- ベストアンサー率62% (800/1280)
現状では存在しません。 #多分将来も http://www.akanko.net/marimo/data/rfc/rfc3629-jp.txt UTF-8はUnicode標準 [UNICODE] により定義される。また、説明と式は ISO/IEC 10646-1 [ISO.10646]の付録Dで見つかるだろう UTF-8において、U+0000..U+10FFFF範囲(UTF-16アクセス可能範囲)からの文 字は、1から4までオクテットの連鎖を使って符号化される。 1オクテット長の場合、その「シーケンス」の唯一のオクテットは、最上 位ビットは 0 がセットされており、残りの 7ビットは文字値を符号化する ために用いられる。 nオクテットのシーケンス(n>1)は、最初のオクテットの最上位nビットに は1をセットし、次に一つの0のビットをセットする。そのオクテットの残っ たビットは、コード化される文字の値のビットを含んでいる。 続くすべてのオクテットは、最上位ビットに1が設定されており、そして、 次のビットが0にセットされ、残る6ビットでキャラクタをエンコードする。 下のテーブルは、これらの幾つかのオクテットタイプのフォーマットを要 約する。文字xは、文字番号のビットを符号化するために利用可能なビット を示す。 文字番号範囲 | UTF-8 オクテット列 (16進数) | (2進数) --------------------+--------------------------------------------- 0000 0000-0000 007F | 0xxxxxxx 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx このように定義されていますので 元となるUnicode が 31bitすべてを使ったものにはならず 約20bit(0x10_ffff) までに制限されているので 4バイトが最長になります。 が、素朴に変換するようなルーチンだとセキュリティホールの 元になりますので注意が必要でしょう。
お礼
早速の回答をありがとうございました。 いろいろ調べると、「UTF-8は1~6バイトです」とありながら、「Unicode値とUTF-8の関係」の表を見ると4バイトまでで、混乱していました。 現行は、Unicode値が20bit以内なので、UTF-8は4バイトが最長になる訳ですね。おかげさまで、これで、とてもすっきりしました。 どうもありがとうとざいました。
関連するQ&A
- 文字コードを相互変換するには?(JIS,SJIS,EUC,UTF-8,UTF-16,Unicode)
現在、文字コード一覧を JavaScript を使って動的にリストを作成する事を行っています。 そこで質問します。 『JavaScript』では文字コードの相互変換する方法はありますか? ある場合は関数、メソッドとその使い方を簡単でいいので教えて下さい。 もし標準では出来ない場合は、どのようにすれば相互変換できるのかその方法を教えて下さい。 ●相互変換コード シフトJISコード←→JISコード シフトJISコード←→EUCコード シフトJISコード←→UTF-8 シフトJISコード←→UTF-16 シフトJISコード←→Unicode 最終的に上記の相互変換を考えています。 変換を繰り返すことで実現できると思っています。 以上。相互変換の方法をお願いします。→JavaScript 歴1.5ヵ月です。
- 締切済み
- JavaScript
- 文字コードってUTF-8が主流に?
文字コードについては、UTF-8が主流になりつつあるってネットで観ました。 文字コードを検索すると次のような説明があります。 (UTF-8のエンコード) UTF-8は、UnicodeとASCIIコードを混在させるための規格です。 (シフトJISコード) シフトJISコードは、SJISとも呼び、Microsoft社が決めたコードでWindows95やMS-DOSやMacなどで使用されています。 その上で質問です。 1、 UTF-8が主流になるってことは、Windows、MacがUTF-8に方向転換するってことでしょうか? 2、 仮にUTF-8が主流になっても、サイトに <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> と記述していれば文字化けなく表示されるのでしょうか? 今の時点では判断できない質問なのでしょうか・・
- ベストアンサー
- その他([技術者向] コンピューター)
- TeraPadの文字コード
TeraPadの文字コードについて教えてください。 1. TeraPadで扱える文字コードは Shift-JIS、JIS、EUC、Unicode、UTF-8、UTF-8N の6種類あるようですが、このEUCとEUC-JPは 同じものですか? 2. Shift-JISで保存すると、TeraPadの下の部分に 表示される文字コードがSJISとなります。 これはShift-JISのことですか? 3. 短い文章では文字コードを誤認識する場合も あるようですが、どうしたら正しく認識 させられますか? 指定した文字コードで保存できず困っています。
- ベストアンサー
- フリーウェア・フリーソフト
- UTF8コードで1バイトの文字が2バイトで表現されているのですが・・・・?
UTF8コードで1バイトの文字が2バイトで表現されているのですが・・・・? とタイトルの通りデータに UTF-8のデータを扱っていて 16進表記で『0xC341』と データが入ってきました。 0xC3…11000011 0x41…01000001 UTF-8の仕様で2バイト目の文字は先頭ビットが 10 から始まる仕様となっていると思いますが 2バイト目の先頭ビットが 0 の場合はUTF-8コードが 壊れていると判定してもいいんですか? それとも、2バイトの先頭ビットが0の場合 次のバイトを1バイト文字とし変換してあげて 0x41 → A として変換するなどといった 特殊な仕様が隠れていたりするのでしょうか? 今のところ壊れていると判断しているのですが、 UTF-8ではないコードだったりする可能性もあるかな? っと思い質問いたしました。 少し不安だったので、しっていましたら、教えてください。 以上 検索ワード UTF-8 2バイト目 1バイト文字
- 締切済み
- その他([技術者向] コンピューター)
- 文字コードUTF-8で作成したエクセル(2003)文書を文字コードSh
文字コードUTF-8で作成したエクセル(2003)文書を文字コードShift_JISに変更したいのですが、変更方法をご教示ください。
- ベストアンサー
- その他MS Office製品
- UTF-8からShift-JISへの文字コード変換について
文字コードがUTF-8のファイルをShift-JISに変換する方法についてご存知の方がいらっしゃれば教えていただきたいです。 仕事上で、UTF-8のファイルをしばしば受領するのですが、Shift-JISに変換しないと、その後の処理ができない作業があり、今は秀丸で開いて、文字コードを変換して保存し直してます。 私以外のメンバも今後同じ作業を実施するようになり、引継ぎ手順書を作成しているのですが、ツール等を使わないWindows標準機能を用いた手順を要求され、どうすればいいかわからなくなって質問させていただきました。 よろしくお願い致します。
- 締切済み
- Windows XP
- 文字コード体系について
WINDOWS95の文字コードはシフトJISのみに対応していたと思うのですが、 このときアメリカなど海外で販売されていた WIN95の文字コードは何だったのかご存じありませんか? WINDOWSxpの文字コードはシフトJISと、unicode対応してると思うのですが、 海外で販売されている物は unicodeのみに対応してるのでしょうか。 それとも他に特殊な文字コード体系を持っているのでしょうか。
- ベストアンサー
- Windows系OS
- Shift_JISからUTF-8への変換について
いつもお世話になります。 UTF-8には4バイト文字がありますが、Shift_JIS(CP932)からUTF-8へ変換する際、 Shift_JISでは2バイトで表わされる文字が、UTF-8では4バイトで表わされてしまう文字はありますでしょうか。 宜しくお願いします。
- 締切済み
- Java
お礼
最新の情報をありがとうございました。 最新の規格に留意しなければならないこと、わかりました。 どうもありがとうございました。