エンコーディング - Unicode など





ローカルエンコーディングの確認と設定

1️⃣ 現在のシステムのローカルエンコーディングを確認します

Windows (cmd / PowerShell)

chcp

現在のコード ページが表示されます。

Linux / macOS (Terminal)

locale

チェックLANGまたはLC_CTYPE値、たとえば:

LANG=zh_TW.UTF-8
---

2️⃣ C++ プログラムの現在のエンコーディングを確認する

#include <clocale>
#include <iostream>

int main() {
    std::cout << "Current locale: " << std::setlocale(LC_ALL, nullptr) << std::endl;
}

Windowsでは通常、次のように表示されますCまたはChinese (Traditional)_Taiwan.950

---

3️⃣ ローカルエンコーディングを設定する

Windows コマンドプロンプト (cmd)

chcp 65001

→ コマンドラインを UTF-8 に切り替えます。

PowerShell

$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8

C++ プログラム内で設定する

#include <クロカレ>

int main() {
    std::setlocale(LC_ALL, "zh_TW.UTF-8"); // UTF-8に設定
}

または Windows で Big5 をセットアップする

std::setlocale(LC_ALL, "Chinese_Taiwan.950");
---

4️⃣ 推奨設定



永久コードを設定する

1️⃣ 問題の背景

使用chcp 65001現在のコマンド プロンプト (cmd) の文字エンコードは一時的にのみ変更できます。ウィンドウを閉じるか再起動すると、デフォルト値が復元されます(例:950ビッグ5)。システム全体とすべてのアプリケーションで UTF-8 を使用する場合は、Windows システム レベルで「地域設定」を変更する必要があります。

---

2️⃣ Windows 全体で UTF-8 を使用するように永続的に設定します。

ステップ 1: 地域設定を開く

  1. オンにするコントロールパネル
  2. 選ぶ時計と地域 → 地域 (Region)
  3. に切り替える管理(管理) ページネーション
  4. クリックシステムロケールを変更します...

ステップ 2: UTF-8 を有効にする

  1. 下部を確認してください:
    ✅ ベータ: 世界的な言語サポートには Unicode UTF-8 を使用します (世界的な言語サポートには Unicode UTF-8 を使用します)
  2. OKを押してシステムを再起動します

再起動後、Windows コンソール、C++、.NET、Python およびその他のプログラムのデフォルトのロケールは UTF-8 になります。

---

3️⃣ 効果があるか検証する

cmdで確認する

chcp

表示された場合:

Active code page: 65001

これは、UTF-8 がデフォルトになったことを意味します。

C++ で検証する

#include <clocale>
#include <iostream>

int main() {
    std::cout << "Current locale: " << std::setlocale(LC_ALL, nullptr) << std::endl;
}
---

4️⃣注意事項

---

5️⃣ 代替案 (システムを変更しない)

システム全体を UTF-8 に変換したくない場合は、特定のアプリケーションの起動パラメータまたはプログラム内設定を設定できます。

cmd /K chcp 65001
または、プログラム内で次のように呼び出します。
SetConsoleOutputCP(65001);
SetConsoleCP(65001);


Unicode escape sequences

基本的な概念

Unicode エスケープ シーケンスは、純粋な ASCII 文字を使用して Unicode 文字を表現する方法です。 プログラミング言語のソース コード、JSON、文字列定数、およびクロスプラットフォーム データ交換でよく使用されます。 この表記は、環境によって特定の文字を直接入力または表示できない場合に使用されます。

\u フォーマットする

最も一般的な形式は次のとおりです\uXXXX、でXXXX4桁の16進数です。 Unicode コードポイントを表します。

\U形式

一部の言語(Pythonなど)でサポートされています\UXXXXXXXX、8 桁の 16 進数を使用して、 すべての Unicode コード ポイントを直接表現できます。

エージェントペア表現

16 ビット Unicode のみをサポートする環境 (JavaScript レガシー仕様など) では、 超えるU+FFFF文字にはサロゲート ペアが必要です。

一般的な言語の例

JavaScript


const s = "\u4E2D\u6587";

Python


s = "\u4E2D\u6587"
s2 = "\U0001F600"

JSON


{
  "text": "\u4E2D\u6587"
}

いつ使用するか



URL Encoding

基本的な概念

URL エンコーディング (パーセント エンコーディングとも呼ばれる) は、文字を URL で安全に使用できる表現に変換する方法です。 URL では特定の ASCII 文字のみが許可され、残りはパーセントと 16 進数に変換する必要があります。

エンコード形式

エンコード形式は%HH、でHHこの文字のバイト値を 16 進数で表現したものです。 UTF-8 で文字が複数バイトを占める場合、それらは個別にエンコードされます。

予約文字

URL 内の一部の文字は特別なセマンティクスを持ち、予約文字と呼ばれます。 エンコードが必要かどうかは、エンコードが使用される場所によって異なります。

予約されていない文字

次の文字は、エンコードせずに URL で直接使用できます。

一般的な言語の例

JavaScript

encodeURIComponent("中国語テスト")
decodeURIComponent("%E4%B8%AD%E6%96%87%20test")

Python

urllib.parse から引用符をインポート、引用符を外す

quote("中国語テスト")
unquote("%E4%B8%AD%E6%96%87%20test")

プラス記号との違い

存在するapplication/x-www-form-urlencodedフォーマットでは、 空白文字は次のようにエンコードされます。+、 それよりも%20。 Still used in general URL paths%20

いつ使用するか



Hexadecimal Escapes

基本的な概念

16 進エスケープは、16 進数を使用して文字を表す方法です。 特定のバイトまたは ASCII 文字を表すために、プログラミング言語の文字列定数でよく使用されます。

\x 形式

最も一般的な形式は次のとおりです\xHH、でHHは 2 桁の 16 進数です。 バイト値を表し、通常は ASCII またはシングルバイト文字に対応します。

適用範囲

16 進エスケープはほとんどの場合、単一バイト配列でのみ機能します。 UTF-8 でエンコードされたマルチバイト文字を使用する場合は、それらを複数に分割する必要があります。\xHH

共通言語のサポート

C / C++


char c = '\x41';

JavaScript


const s = "\x48\x65\x6C\x6C\x6F";

Python


s = "\x48\x65\x6C\x6C\x6F"

Unicode エスケープとの違い

いつ使用するか



ASCIIエンコーディングテーブル

ASCII Hex 対応表
0x00x10x20x30x40x50x60x70x80x90xA0xB0xC0xD0xE0xF
0x00NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSI
0x10DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
0x20!"#$%&'()*+,-./
0x300123456789:;<=>?
0x40@ABCDEFGHIJKLMNO
0x50PQRSTUVWXYZ[\]^_
0x60`abcdefghijklmno
0x70pqrstuvwxyz{|}~DEL
0x80ÇüéâäàåçêëèïîìÄÅ
0x90ÉæÆôöòûùÿÖÜ¢£¥ƒ
0xA0áíóúñѪº¿¬½¼¡«»
0xB0
0xC0
0xD0
0xE0αßΓπΣσµτΦΘΩδφε
0xF0±÷°·²


すべての漢字の Unicode 範囲

Unicode の漢字は主に次のセクションに配布されています。以下に、Unicode テーブル内の一般的な中国語文字 (Hanzi) の範囲と、各範囲の詳細な説明を示します。

Unicode 範囲の説明

各範囲の一覧

スコープ名 Unicode 範囲 説明する
CJK Unified Ideographs 4E00–9FFF 最も一般的な漢字範囲である基本的な中国語、日本語、韓国語の文字が含まれています。
CJK Unified Ideographs Extension A 3400–4DBF 拡張領域 A。あまり使用されない漢字が含まれます。
CJK Unified Ideographs Extension B 20000–2A6DF 拡張エリアBは主に古代文字と一部の珍しい漢字をカバーします。
CJK Unified Ideographs Extension C 2A700–2B73F エリアCを拡張し、古代文字や希少文字をさらに拡充しました。
CJK Unified Ideographs Extension D 2B740–2B81F 拡張領域 D には、あまり使用されない漢字が含まれています。
CJK Unified Ideographs Extension E 2B820–2CEAF エリアEを拡張し、主に珍しい漢字を追加します。
CJK Unified Ideographs Extension F 2CEB0–2EBEF エリアFを拡大し、珍しい古代文字や漢字も収録。
CJK Unified Ideographs Extension G 30000–3134F 拡張G領域は、最近追加された漢字領域です。
CJK Compatibility Ideographs F900–FAFF 日本語のグリフの異なるグリフなど、古い文字セット システムとの互換性のための互換ゾーン。

要約する

上記の範囲にはほとんどの漢字が含まれており、現代漢字、古代文​​字、互換文字など、さまざまなニーズを満たすためにさまざまな地域に配布されています。中国語のフォント デザインまたは文字分析の場合、これらの範囲は完全なフォント サポートを提供します。

Unicode Icons



  • UTF-8文字テーブル


    email: [email protected]
    
    T:0000
    資訊與搜尋 | 回dev首頁
    email: Yan Sa [email protected] Line: 阿央
    電話: 02-27566655 ,03-5924828