「マルチバイト文字」の版間の差分

削除された内容 追加された内容
Episteme (会話 | 投稿記録)
m →‎ワイド文字との対比: Ansi~は古いのでChar~へ、及び改行詰め
45行目:
===ワイド文字との対比===
 
[[C言語]]の規格において、すべての文字を等しいサイズのデータ (wchar_t) で表す[[ワイド文字]](列)に対して、1文字あたり1バイト以上の可変長のバイト列として表したものをマルチバイト文字(列)という。ワイド文字に対する用語であるため、1文字をもっぱら1バイトで表すシングルバイト文字であっても、この意味ではマルチバイト文字に含まれることに注意
ワイド文字に対する用語であるため、1文字をもっぱら1バイトで表すシングルバイト文字であっても、この意味ではマルチバイト文字に含まれることに注意。
 
ワイド文字は内部処理用、マルチバイト文字は入出力用と位置づけられており、マルチバイト文字で入力されたデータを、処理の容易なワイド文字に変換して処理し、結果をマルチバイト文字に変換して出力することが想定されている。
 
ワイド文字およびマルチバイト文字の具体的な表現は環境依存であり規格には定めがない。これらは、実在する具体的な文字集合や符号化方式を分類する用語ではなく、固定長か可変長かという概念を定義した用語である。そのため、何がワイド文字で何がマルチバイト文字かという考え方ではなく、ワイド文字の表現として何を使い、マルチバイト文字の表現として何を使うか、という考え方をとる。ワイド文字としては、近年ではUnicodeが使われることが多い。マルチバイト文字の符号化方式は[[ロケール]]に依存するが、ほとんどの場合はASCIIあるいはISO 646をベースにしたものとなり、日本語ロケールであれば一般的にShift_JISやEUC-JPになる。UTF-8が用いられる場合もある。
ワイド文字およびマルチバイト文字の具体的な表現は環境依存であり規格には定めがない。
これらは、実在する具体的な文字集合や符号化方式を分類する用語ではなく、固定長か可変長かという概念を定義した用語である。
そのため、何がワイド文字で何がマルチバイト文字かという考え方ではなく、ワイド文字の表現として何を使い、マルチバイト文字の表現として何を使うか、という考え方をとる。
ワイド文字としては、近年ではUnicodeが使われることが多い。
マルチバイト文字の符号化方式は[[ロケール]]に依存するが、ほとんどの場合はASCIIあるいはISO 646をベースにしたものとなり、日本語ロケールであれば一般的にShift_JISやEUC-JPになる。UTF-8が用いられる場合もある。
 
C言語では、マルチバイト文字(列)の操作のために以下のような関数が規定されている。ただし、特に日本語のような2バイト文字集合を含むロケールでは、実装が不十分で実用に耐えない場合も多い
ただし、特に日本語のような2バイト文字集合を含むロケールでは、実装が不十分で実用に耐えない場合も多い。
 
*mblen()
65 ⟶ 59行目:
*wcstombs()
 
Windowsのアプリケーション開発では、APIや文字定数の内部表現をワイド文字とマルチバイト文字のどちらにするかを切り替えることができる。また、マルチバイト文字列の操作のために以下のような関数が提供されている。
また、マルチバイト文字列の操作のために以下のような関数が提供されている。
 
*MultiByteToWideChar()
*WideCharToMultiByte()
*AnsiNextCharNext()
*AnsiPrevCharPrev()
 
==Unicode==