GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||
GeezerVison is showing cpprefjp.github.io — text_encoding - cpprefjp C++日本語リファレンス
<text_encoding> text_encoding(C++26)
概要C++プログラムにおけるテキストエンコーディングは、大きく以下の3種類に分けられる:
従来のC++では、これらのエンコーディングに関する情報はロケール経由でしか取得できず、実際の環境と一致しないことが多かった。 エンコーディングの識別にはIANA文字集合レジストリを使用し、エンコーディング名・MIB番号・エイリアスによる相互運用性を確保する。 リテラルエンコーディングとはリテラルエンコーディング(ordinary literal encoding)とは、コンパイラが文字列リテラル( 各コンパイラにおけるリテラルエンコーディングの決定方法は以下の通り:
日本語環境における注意点として、GCCおよびClangはデフォルトで UTF-8 を使用するが、MSVCは日本語Windowsのアクティブコードページ(Shift_JIS / Windows-31J, CP932)をデフォルトとする。そのため、MSVCでUTF-8リテラルを使いたい場合は明示的にオプションを指定する必要がある。 環境エンコーディングとは環境エンコーディングとは、プログラムの実行環境が文字列の入出力に使用することを期待するエンコーディングである。 環境エンコーディングは以下のものに適用される:
環境エンコーディングは実行環境のプロパティであり、コンパイル環境ではない。クロスコンパイルの場合、リテラルエンコーディング(コンパイル環境で決定)と環境エンコーディング(実行環境で決定)は異なりうる。 各プラットフォームにおける環境エンコーディングの決定方法:
注意として、Windowsではコンソールのコードページ(
ロケールに依存しないエンコーディング取得従来のC++では、テキストエンコーディングの情報はロケールと結び付いていた。しかし、Unicodeモデルではエンコーディングとロケール(書式設定やテキスト変換のルール)は直交する概念である。
これにより、ロケールを変更することなく、環境が期待するエンコーディングを安全に取得できる。 クラス
ユースケースC++26仕様でのユースケースリテラルエンコーディングの確認コンパイル時に文字列リテラルのエンコーディングがUTF-8であることを保証する: 環境エンコーディングとリテラルエンコーディングの互換性確認実行時に、リテラルエンコーディングと環境エンコーディングが一致するかを確認する: 外部ライブラリとの相互運用ICU、iconv等のライブラリにエンコーディング名を渡す: µs表記の安全な使用リテラルと出力先のエンコーディングがともにUTF-8である場合にのみ、µ記号を使用する: バージョン言語
処理系
関連項目
参照 | ||||||||||||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |