- PR -

C4819が出現してコンパイルできない

投稿者投稿内容
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-11-05 00:52
引用:

未記入さんの書き込み (2007-11-04 01:33) より:
俺もそれが気になる。
英語なのに日本語で文字化けってどういうことなんだろう。

文字コードで誤動作する経験は確かにあったけどVS2005じゃなかったな。
ウムラウトでもあるんかな。


こんな(http://www.kijineko.co.jp/tech/boost-memo/strange-charcter.html)原因ではないかと思われ。

butthead
大ベテラン
会議室デビュー日: 2004/01/14
投稿数: 162
投稿日時: 2007-11-05 10:07
はい、まさにこれだと思います。
原因がはっきりとわかりありがとうございます。

これがなぜ英語版OS+英語版VSでは出なくなるのかはわかりませんが、、、

[ メッセージ編集済み 編集者: butthead 編集日時 2007-11-05 10:07 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-11-05 22:16
IMEの場合:
 「IMEパッド - 文字一覧」を表示します。
 ウインドウを、縦に伸ばします。
 「シフト JIS」と書いてあるボタンをクリックして、「Unicode」にします。
 「基本ラテン」を表示します。左上が、「 !”#」のようになると思います。
 その段から下に13段目に、「ストローク付きo小文字」があります。
 それが見える状態で、「Unicode」とかかれたボタンをクリックします。
 その場所にあった文字が消えるのが確認できます。

ATOKの場合:
 「文字パレット」を表示します。
 「和文コード表」タブを表示します。
 体型を、「シフト JIS」、見出しを「半角」にします。
 00F8 に割り当てられた文字がないことを確認します。
 「欧文コード表」タブを表示します。
 F8 に、文字が割り当てられていることを確認します。


 Shift_JIS で 0xF8 は、リーディングバイトではありません。よって、Shift_JIS 環境では私用されるはずのない 0xF8 と言う文字コードが使われていることから、C4819 の警告が出ると考えられます。もし、リーディングバイトの文字が使われていると、日本語に化けるので、Shift_JIS で定義されていない範囲の文字が使われたときのみ、と言えるでしょう。
 なお、VS.NET 2003 には、C4819 は定義されていないようです。付属の MSDN ライブラリで、このエラーコードが検索できませんでした。なので、VS2005 以降でのみ発生する可能性があると言えそうです。
butthead
大ベテラン
会議室デビュー日: 2004/01/14
投稿数: 162
投稿日時: 2007-11-06 07:31
IMEで文字コードを変更することができたんですね。

Jitta様有用なご回答、ありがとうございました。m(__)m
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-11-07 21:30
引用:

buttheadさんの書き込み (2007-11-06 07:31) より:
IMEで文字コードを変更することができたんですね。


 なんとなく、私が意図することが伝わっていないような、重大な誤解をされているような気がします。
でも、「ここを、こう誤解している」と、はっきりさせることができません。
しかし、これを見た他の人が誤解しないためにも、書いておきます。


 IME で文字コードを変更することはできません
(ここで「文字コード」は、「コード体系」のことを指していると思われます。)

 IME パッドで「Shift_JIS」とか「Unicode」とかが切り替わるのは、これから入力する文字コードの体系です。Shift_JIS で書かれたファイルに Unicode で入力すると、その文字は化ける可能性があります。

 2007-11-05 22:16 の投稿は、2007-11-04 01:33 の未記入さん「英語なのに日本語で文字化けってどういうことなんだろう。」、2007-11-05 10:07 のbuttheadさん「これがなぜ英語版OS+英語版VSでは出なくなるのかはわかりません」に対して、「こうしたら、英語圏では定義されていて、日本語圏では定義されていない文字が確認できる」という方法を示したに過ぎません。
(おそらく、未記入さんはわかっておられて、「ASCII 範囲がなぜ化けるの?」ってことだと思いますけど。)
ですから、Shift_JIS で編集しているアプリケーションに対して「ストローク付きo小文字」を入力しようとして IME パッドを開き、Unicode で 0x00F8 を入力しても、アプリケーションには入力できない可能性があります。
0x00F8 は、確かに送られていますが、受け取ったアプリケーション側はそのコードを Shift_JIS で解釈しようとするからです。
「可能性がある」と濁しているのは、アプリケーションが「Unicode で送られてきた」ことを認識して、Shift_JIS に変換するかも知れないからです。この辺はアプリケーションの仕様に関わるので、断言はできません。

 この辺のこともふまえて、2007-11-02 22:10 (4ページ目最初)の投稿では、「IE でテキストを表示させ、エンコードを「西ヨーロッパ」にして確認しました。」と書いています。私が使っているエディタでは「西ヨーロッパ」のコード体系を表示できないからです。

 もっと有名なものでは、Copy Right Sign の (C) と、Trade Mark Sign の TM、登録商標記号の (R) です。それぞれ 0xA9, 0x99, 0xAE に定義されています。
0x99 は Shift_JIS でリーディングバイトですから、続く文字のコードによっては、漢字に化けます。
0xA9, 0xAE はリーディングバイトではないので、このコードが使われている場合、VS2005 では C4819 が発生します。


 フォントに文字が定義されていることと、コード体系に文字が定義されていることを混同してはいけません。
混同させるような確認方法を提示した私もいけないのですが。
お節介ですが、buttheadさんが英語圏の人と仕事をするなら、このあたりのことはきちんと押さえておくべきかと思います。

スキルアップ/キャリアアップ(JOB@IT)