A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
実は「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 に限られることになると思います.
No.2
- 回答日時:
UTF-8 には新旧があります.
> 「UTF-8は1~6バイトです」
これは古い方の UTF-8 (RFC2279(廃),1998年1月).
> 「Unicode値とUTF-8の関係」の表を見ると4バイトまで
これが現行の UTF-8 (RFC3629,2003年11月).
参考URL:http://www5d.biglobe.ne.jp/~noocyte/Programming/ …
Unicodeに歴史があり、規格が変わってきたことわかりました。
URLもとても参考になりました。
どうもありがとうございました。
No.1
- 回答日時:
現状では存在しません。
#多分将来も
http://www.akanko.net/marimo/data/rfc/rfc3629-jp …
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Windows 8 メモ帳による文字コード変換 2 2022/09/01 18:38
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- C言語・C++・C# S-JIS → JIS コード変換するには 3 2023/02/09 23:55
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(ソフトウェア) powershell で出力したテキストファイルをvim で開くと文字化け 2 2023/01/11 21:39
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
C言語での引数の省略方法
C言語・C++・C#
-
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
-
4
NUMBER(N,M) としたときの、格納データサイズ(バイト)
Oracle
-
5
html上で、バッチやexeファイルの起動をしたい
ホームページ作成・プログラミング
-
6
■文字コード判定■
C言語・C++・C#
-
7
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
8
バッチからsqlplusの接続エラーの検知について
その他(プログラミング・Web制作)
-
9
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
10
Shift_JISで表示できて、UTF-8で表示できない字は何でしょう
その他(ソフトウェア)
-
11
コマンドプロンプトのエラーについて
その他(パソコン・周辺機器)
-
12
スペースデスクというアプリは安全ですか?Windows10ですが…… https://www.spa
SSL・HTTPS
-
13
Oracle 8i コンマ(,)を含むデータをinsertしたい
その他(データベース)
-
14
GetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・
C言語・C++・C#
-
15
char*を初期化したいのですが
C言語・C++・C#
-
16
拡張子はなぜ、大文字と小文字のものがある?
Windows Vista・XP
-
17
regsvr32で登録された一覧を知りたい
UNIX・Linux
-
18
共有メモリについて
C言語・C++・C#
-
19
シェルスクリプトでオラクルのエラーメッセージを取得するには
Oracle
-
20
ファイル更新日取得
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
char str[256]の256の意味は?
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
バイナリとBCDコード
-
ワイド文字のバイト数が取得で...
-
「1TB」のHDDに日本語は何字入...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
varchar(M)のMは文字数ですかバ...
-
バイト境界とは
-
UCS-2の一覧表が欲しい
-
ビットスワップとバイトスワッ...
-
SQLで1バイト、2バイト混在...
-
ピクセル,dpiから容量(バイト...
-
テキストBOXの入力制限について
-
sedコマンドで全ての2バイト文...
-
VBSでテキストファイルの文字列...
-
vb6 バイトオーダエンディアン...
-
この関数はどのプログラミング...
-
GetWindowTextでアドレスバーか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
バイナリとBCDコード
-
「1TB」のHDDに日本語は何字入...
-
Javaで日本語1文字のバイト数
-
バイト列とバイナリ列の違いが...
-
SQLで1バイト、2バイト混在...
-
ピクセル,dpiから容量(バイト...
-
C++ Builderで文字列をバイトに...
-
64bit対応
-
ワイド文字のバイト数が取得で...
-
UCS-2の一覧表が欲しい
-
3バイト文字(UTF-8)をprintfで...
-
VBAでShift-JISのURLエンコード
-
機種依存文字をチェックしたい。
-
ビットスワップとバイトスワッ...
-
VBSでテキストファイルの文字列...
おすすめ情報