2バイト文字とは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 言葉 > 言葉 > > 2バイト文字の意味・解説 

にバイト‐もじ【二バイト文字】


2バイト文字

読み方にバイトもじ
別名:ダブルバイト文字
【英】Double Byte Character

2バイト文字とは、文字コードのうち、1文字2バイト表現する文字総称である。一般的に中国語日本語韓国語CJK)の文字体系を指す場合が多い。

コンピュータにおいて、データ1バイト256通り情報表現することができる。英語のアルファベットのような言語は、1バイト充分に表現することができる。しかし、漢字のような言語種類膨大であるため、256種類では足りない。そのため、文字表現するためにデータ2バイト利用し2562乗である65536通り情報表現可能とすることによって、実用的なレベル文字表現を実現している。

2バイト文字に対してアルファベット記号含んで1バイト表現される文字は、1バイト文字呼ばれる日本語ワープロソフトでは、1バイト文字と2バイト文字を並存させることができる。

2バイト文字は、1バイト文字2個分の幅を持つ正方形に近い字形表記されるこのため1バイト文字半角、2バイト文字を全角と呼ぶこともある。2バイト文字の中には英数字カタカナといった、1バイト文字でも表現できる文字含まれている。そのような1バイト文字でも2バイト文字でも表現できる文字区別するための表現として半角カナ全角英数字、などのように全角と半角区別利用されることが多い。

情報処理のほかの用語一覧
文字コード:  SBCS  SI/SO制御  サニタイジング  2バイト文字  デリミター  UCS  Unicode

マルチバイト文字

(2バイト文字 から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/01/27 01:41 UTC 版)

マルチバイト文字(マルチバイトもじ)とは、コンピュータ上で

  • 1文字を複数バイトで表す体系(文字コード
  • 1文字のバイト数が可変であるような体系
  • そのような体系で表される文字

を指すが、文脈により意味合いが異なる。

文字集合におけるマルチバイト文字

ISO 2022の体系を前提とした図形文字集合において、1文字が1バイトの文字集合(: single-byte character set、94文字集合または96文字集合)に対して、1文字が2バイト以上の文字集合を、マルチバイト文字集合(: multibyte character set)という。94×94文字集合(2バイト)、96×96文字集合(2バイト)、94×94×94文字集合(3バイト)などがこれに該当するが、実際には94×94文字集合以外はまれである。

特に、1文字が2バイトの文字集合を2バイト文字集合(: double-byte character set)といい、以下のようなものがある。

なお、2バイト文字集合の文字のことを2バイト文字と呼ぶことがある。しかし、1バイト文字集合の文字であっても、EUC-JPにおけるJIS X 0201カタカナなどのように、符号化方式によっては一見1文字あたり2バイトであるかのような符号化をされることがある。また近年[いつ?]では、Unicode で処理することも多い。そのため、文字集合でなく個々の文字を指して1バイト文字・2バイト文字と表現することは、混乱を招くことがある。

符号化方式におけるマルチバイト文字

シングルバイト文字との対比

符号化方式において、1文字が常に1バイトとなる符号化方式[注釈 1]に対して、1文字が2バイト以上になることのある符号化方式、およびそれによって符号化された文字(列)のことを、マルチバイト文字(列)という。

実際には、ほぼ例外なく ASCII あるいは ISO 646 をベースとし、バイト値 80 - FF16進法(あるいはそのサブセット)で始まるバイト列によりそれ以外の文字集合を表現する。 1文字のバイト数が可変のため、プログラムでの操作に留意を要する。

符号化方式であるから厳密には character set(文字集合) と呼ぶのは不正確だが、とくにIBMマイクロソフトの用語として、single-byte character set(単バイト文字集合)、double-byte character set(2バイト文字集合)、multibyte character set(多バイト文字集合)と呼ぶことが多い。

以下のようなものがある。

ワイド文字との対比

C言語の規格において、char型以上のサイズを持つwchar_t型を利用したワイド文字(列)に対して、char型を利用して1文字あたり1バイト以上の可変長のバイト列として表したものをマルチバイト文字(列)という。ワイド文字に対する用語のため、1文字をもっぱら1バイトで表すシングルバイト文字であっても、この意味ではマルチバイト文字に含まれる。

ワイド文字を内部処理に用いるプラットフォームもある。ワイド文字のサイズが2バイトあるいは4バイトの場合、本来1文字ごとに1バイトで収まるはずのASCII範囲の文字にも2バイトあるいは4バイトを費やすことになり、少なくともASCII範囲に関してはメモリ効率は劣ることになるが、処理対象のデータ中にマルチバイト文字で表現すると2バイト以上を費やすような文字が多数出現する場合は、ワイド文字を利用したほうが処理効率もメモリ効率も高くなることがある。

ワイド文字およびマルチバイト文字の具体的な表現は環境依存であり規格には定めがない。これらは、実在する具体的な文字集合や符号化方式を分類する用語ではなく、固定長か可変長かという概念を定義した用語である。そのため、何がワイド文字で何がマルチバイト文字かという考え方ではなく、ワイド文字の表現として何を使い、マルチバイト文字の表現として何を使うか、という考え方をとる。ワイド文字としては、近年[いつ?]では Unicode が使われることが多い。マルチバイト文字の符号化方式はロケールに依存するが、ほとんどの場合は ASCII あるいは ISO 646 をベースにしたものとなり、日本語ロケールであれば一般的に Shift_JIS や EUC-JP になる。UTF-8 が用いられる場合もある。

ワイド文字は当初、文字集合におけるすべての文字を等しいサイズのデータで一様に処理できるようにすることを想定していた。しかし、Unicodeにおいてサロゲートペア結合文字異体字セレクタといった拡張概念が採用されたことにより、UTF-16UTF-32といった符号化方式のデータをワイド文字に格納する場合、たとえワイド文字が16ビットあるいは32ビットのサイズを持っていたとしても、1つのワイド文字だけでは表現できないUnicode文字も現れるようになった。文字境界の判定や文字数のカウントなど、プログラム上での扱いはマルチバイト文字と同様に注意を要する。

C言語(C95以降)では、マルチバイト文字(列)の操作のために以下のような関数が規定されている。ただし、特に日本語のような2バイト文字集合を含むロケールでは、実装が不十分で実用に耐えない場合も多い。

  • mblen
  • mbtowc
  • wctomb
  • mbstowcs
  • wcstombs

Microsoft Windowsでは、ワイド文字が2バイト(16ビット)として定義されており、符号化方式にUTF-16を利用する。多くのWindows APIには、入出力インターフェイスとして、システムロケール設定に依存するマルチバイト文字セットを利用する関数・構造体(シンボル末尾にAが付けられている)と、Unicode文字セットを利用する関数・構造体(シンボル末尾にWが付けられている)の両方が用意されており、ヘッダーファイルをインクルードする際に_UNICODEシンボルの定義有無[1]でマルチバイト文字セット/Unicode文字セットを切り替えることのできるプリプロセッサマクロも用意されているが、マルチバイト文字セット用のAPIはWindows 9x系向けに書かれたコードとの互換性のために残されているものであり、またWindows NT系では内部処理にUTF-16を使用しているため、マルチバイト文字セット用のAPIを使用すると変換のための余計なオーバーヘッドが増える。Microsoft Visual C++はバージョン7.1 (2003) まではマルチバイト文字セットが既定値だったが、バージョン8.0 (2005) 以降はUnicode文字セットが既定値となった。マルチバイト文字列の操作や、ワイド文字列との相互変換のために以下のようなAPI関数が提供されている。

  • MultiByteToWideChar
  • WideCharToMultiByte
  • CharNextA
  • CharPrevA

シンボル末尾にAが付けられたマルチバイト文字セット用API関数は、コードページ番号を明示的に指定できず、動作はシステムロケール設定に依存する。

Unicode

近年[いつ?]、符号化文字集合としての ISO 10646Unicode)、およびその符号化方式(UTF-8UTF-16など)が広く使われている。

文字集合としての ISO 10646 は、1バイト=1オクテット(8ビット)と定義すれば、一応マルチバイト文字集合ということはできる。しかし、現実的には、1バイト文字集合とマルチバイト文字集合という分類の前提となっているのは、「1バイト文字集合(ASCII、ISO 646)を基本としつつマルチバイト文字集合を導入する」という命題であり、単一文字集合である Unicode を採用する時点でこの前提自体が崩れている。

符号化方式としては、シングルバイトの符号化方式と対比した場合、UTF-8 などはマルチバイトの符号化方式といえる。UTF-16 などは ASCII 互換でないため考慮されないことが多い。また、ワイド文字の文脈では、一般にワイド文字としては UTF-16 や UTF-32 を使い、マルチバイト文字としては、UTF-8 などを使う場合と、従来の Shift_JIS などを使う場合とがある。

脚注

注釈

  1. ^ ISO 8859/1、Windowsコードページ1252、Macintosh Roman など

出典

  1. ^ Unicode Programming Summary” (英語). Microsoft Docs. 2019年7月15日閲覧。

関連項目


2バイト文字

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/04/06 05:35 UTC 版)

ISO/IEC 6937」の記事における「2バイト文字」の解説

基本文字含まれないアルファベット2バイトコード化する。第1バイトは「字幅のないダイアクリティカルマーク」(non spacing diacritical mark)で、第2バイト基本アルファベットにそのダイアクリティカルマークをつける。例えば、アキュート・アクセントつきの小文字のe (é)は「[字幅のないアキュート・アクセント] + e」として表現されるISO 6937の「字幅のないダイアクリティカルマーク」は以下の13種類である。 種類コード2バイト生成結果グレイヴ・アクセント 0xC1 AEIOUaeiou ÀÈÌÒÙàèìòù アキュート・アクセント 0xC2 ACEILNORSUYZacegilnorsuyz ÁĆÉÍĹŃÓŔŚÚÝŹáćéģíĺńóŕśúýź サーカムフレックス 0xC3 ACEGHIJOSUWYaceghijosuwy ÂĈÊĜĤÎĴÔŜÛŴŶâĉêĝĥîĵôŝûŵŷ チルダ 0xC4 AINOUainou ÃĨÑÕŨãĩñõũ マクロン 0xC5 AEIOUaeiou ĀĒĪŌŪāēīōū ブレーヴェ 0xC6 AGUagu ĂĞŬăğŭ ドット 0xC7 CEGIZcegz ĊĖĠİŻċėġż トレマウムラウト) 0xC8 AEIOUYaeiouy ÄËÏÖÜŸäëïöüÿ リング 0xCA AUau ÅŮåů セディーユ 0xCB CGKLNRSTcklnrst ÇĢĶĻŅŖŞŢçķļņŗşţ ダブルアキュート 0xCD OUou ŐŰőű オゴネク 0xCE AEIUaeiu ĄĘĮŲąęįų ハーチェク 0xCF CDELNRSTZcdelnrstz ČĎĚĽŇŘŠŤŽčďěľňřšťž

※この「2バイト文字」の解説は、「ISO/IEC 6937」の解説の一部です。
「2バイト文字」を含む「ISO/IEC 6937」の記事については、「ISO/IEC 6937」の概要を参照ください。

ウィキペディア小見出し辞書の「2バイト文字」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



2バイト文字と同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「2バイト文字」の関連用語

2バイト文字のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



2バイト文字のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【2バイト文字】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのマルチバイト文字 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのISO/IEC 6937 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS