萌えハッカーニュースリーダー

2025/11/24 17:41 The char-TCHAR-wchar_t Pendulum in Windows API Native C/C++ Programming

出典: https://giodicanio.com/2025/11/24/the-char-tchar-wchar_t-pendulum-in-windows-api-native-c-and-c-plus-plus-programming/
hakase
博士

やあ、ロボ子。今日のテーマはWindowsのC/C++ APIプログラミングにおけるテキストの扱い方の変遷じゃ。

roboko
ロボ子

博士、よろしくお願いします。`char`から`TCHAR`、`wchar_t`、そしてまた`char`に戻るという流れがあるのですね。

hakase
博士

そうなんじゃ。昔は`char`が使われていたんじゃよ。Windows 95の時代じゃな。

roboko
ロボ子

その後、`TCHAR`モデルが登場したのですね。ANSI/MBCSとUnicodeの両方に対応するためですか?

hakase
博士

`TCHAR`は賢い選択だったんじゃ。ANSI/MBCS(`char`)とUnicode(`wchar_t`)を切り替えられるようにしたんじゃから。

roboko
ロボ子

Visual C++のバージョンによってデフォルト設定が異なっていたのですね。初期はANSI/MBCSがデフォルトだったのですね。

hakase
博士

そうじゃ。Visual C++ 4, 5, 6, .NET 2003では、デフォルトでANSI/MBCSが使われていたんじゃ。

roboko
ロボ子

Windows XPの時代には、Unicode(UTF-16)と`wchar_t`が推奨されるようになったのですね。国際化対応のためですか?

hakase
博士

その通り!グローバル化の波に乗るために、Unicodeへの移行は必然だったんじゃ。

roboko
ロボ子

そして、Visual C++ 2005以降は、Unicode(UTF-16)と`wchar_t`がデフォルトになったのですね。

hakase
博士

じゃな。Unicode万歳!って感じじゃ。

roboko
ロボ子

Windows 10 バージョン1903以降、Windows APIのA版(8ビット`char`)がUTF-8をデフォルトで使用できるようになったとのことですが、これはどういうことでしょうか?

hakase
博士

これは大きな変化じゃぞ!UTF-8の登場で、`char`が再び脚光を浴びることになったんじゃ。

roboko
ロボ子

8ビット`char`文字列の問題点として、ANSIコードページでは日本語や中国語などの文字を十分に表現できないことが挙げられていますね。

hakase
博士

そうなんじゃ。ANSIコードページは、英語圏の文字を表現するには十分だが、多言語となると限界があるんじゃ。

roboko
ロボ子

異なるコードページ間で同じバイトが異なる文字を表す曖昧さも問題なのですね。

hakase
博士

まさに!文字化け地獄への入り口じゃ。

roboko
ロボ子

Windowsで8ビット`char`文字列によく使われたWindows code page 1252(CP-1252, Windows-1252)は、英語や西ヨーロッパ言語には適しているが、日本語や中国語には不十分なのですね。

hakase
博士

その通り。CP-1252は、特定地域の文字しかカバーできないんじゃ。

roboko
ロボ子

UTF-8のサポートによって、`char`が再び使えるようになったのは、開発者にとって朗報ですね。

hakase
博士

そうじゃな。でも、過去の遺産との互換性も考慮する必要があるから、油断は禁物じゃぞ。

roboko
ロボ子

UTF-8がデフォルトになったことで、多言語対応が容易になり、文字コードの問題も軽減されることが期待できますね。

hakase
博士

まさに!これからは、文字コードに悩まされることなく、開発に集中できるはずじゃ。

roboko
ロボ子

博士、今日は大変勉強になりました。ありがとうございました。

hakase
博士

どういたしまして。最後に一つ、文字コードの話は奥が深いから、ハマりすぎると抜け出せなくなるぞ!…って、ロボ子もしかして、もうハマってる?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search