Namespaces
Variants

Character sets and encodings

From cppreference.net

目次

基本文字セット

以下の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) 文字は基本文字集合に含まれていません。代わりに、ソースファイル内の各行の終端を示す何らかの方法が存在し、この文書ではそのような行終端指示子を単一の改行文字であるかのように扱います。

基本文字セットは、 basic source character set とも呼ばれます。

基本実行文字セット

basic execution character set は、basic character setのすべてのメンバーに加えて、以下の文字を含みます:

コード単位 文字
U+0000 Null
U+0007 Bell
U+0008 Backspace
U+000A Line feed (LF)
U+000D Carriage return (CR)

各基本実行文字集合について、メンバーの値は非負で互いに異なるものとする。ソース基本文字集合と実行基本文字集合の両方において、上記の10進数字リストで0以降の各文字の値は、前の文字の値より1大きくなければならない。U+0000 NULL文字の値は0である。

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

C++では、基本実行文字セットは basic literal character set および basic execution wide-character set としても知られています。

リテラルエンコーディング

literal encoding は、エンコーディングプレフィックスなしの character constant または string literal 内の値への実行文字セットの文字の実装定義マッピングです。これは、すべての基本実行文字セット値から実装定義のエンコーディングへのマッピングをサポートします。マルチバイト文字シーケンスを含む場合があります。

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

コードポイント 文字 グリフ
U+0024 Dollar Sign $
U+0040 Commercial At @
U+0060 Grave Accent `
(C23以降)

wide literal encoding は、実行文字セットの文字から 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++ documentation 文字セットとエンコーディング