マルチバイト文字
C言語の規格において、char型以上のサイズを持つwchar_t型を利用したワイド文字(列)に対して、char型を利用して1文字あたり1バイト以上の可変長のバイト列として表したものをマルチバイト文字(列)という。ワイド文字に対する用語のため、1文字をもっぱら1バイトで表すシングルバイト文字であっても、この意味ではマルチバイト文字に含まれる。
ワイド文字を内部処理に用いるプラットフォームもある。ワイド文字のサイズが2バイトあるいは4バイトの場合、本来1文字ごとに1バイトで収まるはずのASCII範囲の文字にも2バイトあるいは4バイトを費やすことになり、少なくともASCII範囲に関してはメモリ効率は劣ることになるが、処理対象のデータ中にマルチバイト文字で表現すると2バイト以上を費やすような文字が多数出現する場合は、ワイド文字を利用したほうが処理効率もメモリ効率も高くなることがある。
ワイド文字およびマルチバイト文字の具体的な表現は環境依存であり規格には定めがない。これらは、実在する具体的な文字集合や符号化方式を分類する用語ではなく、固定長か可変長かという概念を定義した用語である。そのため、何がワイド文字で何がマルチバイト文字かという考え方ではなく、ワイド文字の表現として何を使い、マルチバイト文字の表現として何を使うか、という考え方をとる。ワイド文字としては、近年では Unicode が使われることが多い。
符号化方式において、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(多バイト文字集合)と呼ぶことが多い。
以下のようなものがある。
Big5(コードページ950)
EUC-CN(コードページ936)
EUC-JP
EUC-KR(コードページ949)
ISO-2022-JP
Shift_JIS(コードページ932/942)
UTF-8(多バイト符号化方式)