久々に技術的な話。 ちょっと、仕事でハマったので、共有&メモっておきます。 Visual Studio の C/C++ で、文字列リテラルがビルド後の実行ファイル内で文字コードが何になるかという話。 まず、文字列リテラルですが printf( "abcdef" ); のようにダブルクォーテーション「"」で囲まれた中身、「abcdef」が文字列リテラルです。 半角アルファベット英数文字ならまったく問題なく、ASCIIコードになります。 問題は全角文字、日本語が入ってきた場合です。 printf( "ほげほげ" ); これを Visual Studio でビルドすると、出来上がった exe の中身は Shift JIS になります。 他の文字コードの選択としては、ワイド文字(UTF-16)があります。 ワイド文字にするには、どうすれば良いかと言いますと。 文字列リテラルの前に接頭辞「L」を付け
![『文字列リテラルの文字コード』](https://cdn-ak-scissors.b.st-hatena.com/image/square/bd8ee4d47640a9a6e3497cb5ea79da71c22e814c/height=288;version=1;width=512/https%3A%2F%2Fstat.profile.ameba.jp%2Fprofile_images%2F20130120%2F23%2F4b%2F5c%2Fj%2Fo032003201358691670906.jpg)