質問: "繝ュ繧ク繝・け" という感じで文字化けしています。 if文での対応付け ( "ロジック" => "繝ュ繧ク繝・け" 等 ) すれば確かに可能ですが、 これだとユーザが定義することが難しい ( あるいは 複雑になる ) のでどうすればいいのか。。。 外部ライブラリに頼る方法もありますが、 自分でコンパイルしなければいけないし。 ( するのはいいが、Windowsのため、makeがデフォルトで入っていない。。。 インストールしたのはいいが、 "make Makefile" と打っても 「指定したメイクファイルにすることはありません。」となるし、 "make" と打っても 「対象ファイルがありません。」となるし。。。 コンパイルできない!! ) VC++ で DLL にして。。。とやるのはいいが、 C/C++ の場合、(外部ライブラリが)STL対応でなければ C言語のように 文字列は 要素数を指定しなければならないし。。。 上記ソースコードをかなり変えてもいいので、 jpgファイルをファイル読み込み( バイナリモード ) で読み込み、 日本語対応で 指定タグの存在をチェックする方法を宜しくお願い致します。 ※ たぶん丸投げではないと思います。( 一応、自分なりに組んだので。 ) [環境等] 言語 : C/C++ ( いわゆる BetterC ) コンパイラ : MinGW ( g++ ) 知りたいこと: 上記ソースコードを 全角のjpgタグ対応にする方法 宜しくお願い致します。
回答: こんにちは。 文字化けは大抵文字コードの不一致です。 手元のファイルで確認したところ、jpegファイル内のタグはUTF-8で記録されているようです。 MinGWもデフォルトはUTF-8ですがソース・コードもUTF-8で記述されている必要が有ります。 UTF-8を使えるエディタでUTF-8へ変換すれば文字化けは解消すると思います。 他に私は使ったことがないのですが文字コードを指定する方法もあります。 `-finput-charset=cp932`はソース上のリテラルがShift-JISで書かれているとこをコンパイラへ教えるオプションです。たぶん、このオプションを追加しても解消するのではないかと思います。(ついでに`-fexec-charset=utf-8`はリテラルをutf-8とする指示です。デフォルトなので指定不要な筈。) デフォルトは両方ともutf-8です。 両方同じなので「変換不要」と解釈されてソースをShift-JISで記述していたら、そのままShift-JISとなり文字化けするのだろうと思います。 make.txtをテキスト・ファイルとして見た時の文字化けですが、UTF-8で記録された文字列をビューワがShift-JISとして表示しているためです。 UTF-8を使えるビューワを使ってUTF-8である旨指定すれば化けないです。