名前空間
変種
操作

文字セットとエンコーディング

From cppreference.com
< c‎ | language

目次

[編集] 基本文字セット

基本文字セットは、以下の95文字で構成されます。

コード単位 文字 グリフ
U+0009 水平タブ
U+000B 垂直タブ
U+000C フォームフィード (FF)
U+0020 スペース
U+0021 感嘆符 !
U+0022 引用符 "
U+0023 番号記号 #
U+0025 パーセント記号 %
U+0026 アンパサンド &
U+0027 アポストロフィ '
U+0028 左括弧 (
U+0029 右括弧 )
U+002A アスタリスク *
U+002B プラス記号 +
U+002C コンマ ,
U+002D ハイフンマイナス -
U+002E ピリオド .
U+002F スラッシュ /
U+0030 .. U+0039 数字のゼロ .. ナイン 0 1 2 3 4 5 6 7 8 9
U+003A コロン :
U+003B セミコロン ;
U+003C 小なり記号 <
U+003D 等号 =
U+003E 大なり記号 >
U+003F 疑問符 ?
U+0041 .. U+005A ラテン大文字 A .. Z A B C D E F G H I J K L M

N O P Q R S T U V W X Y Z

U+005B 左角括弧 [
U+005C バックスラッシュ \
U+005D 右角括弧 ]
U+005E サーカムフレックスアクセント ^
U+005F 下線 _
U+0061 .. U+007A ラテン小文字 a .. z a b c d e f g h i j k l m

n o p q r s t u v w x y z

U+007B 左波括弧 {
U+007C 縦線 |
U+007D 右波括弧 }
U+007E チルダ ~

C++とは異なり、U+000A LINE FEED (LF) 文字は基本文字セットに含まれていません。代わりに、ソースファイルの各行の終端を示す方法があり、ドキュメントではそのような行末インジケータを単一の改行文字として扱います。

基本文字セットは、基本ソース文字セットとも呼ばれます。

[編集] 基本実行文字セット

基本実行文字セットには、基本文字セットのすべてのメンバーに加えて、以下の文字が含まれます。

コード単位 文字
U+0000 ヌル
U+0007 ベル
U+0008 バックスペース
U+000A ラインフィード (LF)
U+000D キャリッジリターン (CR)

各基本実行文字セットについて、メンバーの値は非負であり、互いに異なります。ソースと実行の両方の基本文字セットにおいて、10進数の数字のリストの0の後の各文字の値は、前の値より1大きい値でなければなりません。U+0000 NULL文字の値は0です。

基本実行文字セットの各メンバーの表現は、バイトに収まります。

C++では、基本実行文字セットは基本リテラル文字セットおよび基本実行ワイド文字セットとも呼ばれます。

[編集] リテラルエンコーディング

リテラルエンコーディングは、実行文字セットの文字を、エンコーディングプレフィックスなしの文字定数または文字列リテラルの値にマッピングする実装定義のマッピングです。基本実行文字セットのすべての値から実装定義のエンコーディングへのマッピングをサポートします。マルチバイト文字シーケンスを含む場合があります。

以下の文字は基本実行文字セットには含まれていませんが、通常の文字定数または通常の文字列リテラルで単一バイトとしてエンコードされる必要があります。

コード単位 文字 グリフ
U+0024 ドル記号 $
U+0040 商業アットマーク @
U+0060 グレイブアクセント `
(C23以降)

ワイドリテラルエンコーディングは、実行文字セットの文字を、Lプレフィックス付きの文字定数または文字列リテラルの値にマッピングする実装定義のマッピングです。基本実行文字セットのすべての値から実装定義のエンコーディングへのマッピングをサポートします。実装が__STDC_MB_MIGHT_NEQ_WC__を定義しない場合、マッピングは基本実行文字セットの値すべてに対して、リテラルエンコーディングと同じ値になります。1つ以上の値が、拡張実行文字セットの1つ以上の値にマッピングされる場合があります。

UTF-8エンコーディングは、実行文字セットの文字をu8プレフィックス付きの文字定数または(C23以降)文字列リテラルにマッピングするために使用されます。

実装定義のエンコーディング(C23まで)UTF-16エンコーディング(C23以降)は、実行文字セットの文字をuプレフィックス付きの文字定数または文字列リテラルにマッピングするために使用されます。

実装定義のエンコーディング(C23まで)UTF-32エンコーディング(C23以降)は、実行文字セットの文字をUプレフィックス付きの文字定数または文字列リテラルにマッピングするために使用されます。

(C11 以降)

[編集] 関連項目

ASCIIチャート
C++ ドキュメント (文字セットとエンコーディング)
English 日本語 中文(简体) 中文(繁體)