まず
http://oshiete.goo.ne.jp/qa/8592830.html
上記内容で、スクリプト言語のスクリプトファイルの文字コードの質問をしたものです。
PHPやunixシェルは内部的に文字コード情報をもたたず
すべての文字列をバイト列として保持しており
pythonでは,文字列は内部的にオブジェクトが文字エンコーディング情報を持つ必要があるため事前にマジックコメントでスクリプトエンジンに教えてやる必要がある・・と
回答をいただきました。
それではたとえばjavaに置き換えると
javaはコンパイルすると文字列をすべてunicodeのコードポイントに変換するようです。
そのためjavaのソースファイルをコンパイルするときに
javac -encodingというコンパイルオプションがあるようです。ここで指定された文字コードからunicodeへと変換されていると・・・・。
ではC#はどうなのでしょうか?
cscコンパイラのコンパイルオプションには文字コードを指定するようなオプションは見つかりませんでした。
しかし
using System;
using System.Windows.Forms;
namespace test{
class AClass{
public string property = "";
public AClass(){
}
}
class TestClass{
public static void Main(string [] args){
AClass obj = new AClass();
obj . property = "文字列 ";
Console.WriteLine(obj. property);
MessageBox.Show(obj.property);
}
}
}
上記のようなコードをUTF-8およびSJIS-winでそれぞれ保存して、コンパイル後実行しても
文字化けすることなく「文字列」という表示がされました。
ただし、EUC-JPで保存したファイルをコンパイルすると、なんと文字化けしてしましまいました。
これはなぜでしょうか?
C#コンパイラはどこでどのようにコンパイル対象のプログラムファイルの文字コードを知り得ているのでしょうか?
そしてなぜ、UTF-8/SJIS-winは問題なく文字列と表示されたにもかかわらず
EUC-jpだと文字化けしたのでしょうか?
よろしくご教授ください。
ちなみにC#のコンパイラはコマンドプロンプロトから直接CSC.exeを実行しています。
No.1ベストアンサー
- 回答日時:
まずは,MSDNの該当ページ。
・/codepage (C# コンパイラ オプション)
http://msdn.microsoft.com/ja-jp/library/w0kyekyh …
> ソース コードの作成時に使用されたコード ページがコンピューターで有効なコード ページと同じ場合、または UNICODE か UTF-8 の場合は、/codepage を使う必要はありません。
ちょっと説明がおかしな部分もありますが,
・ソースコードが使っているコードページと,cscのプロセスのコードページが同じ場合 (通常はユーザーのコードページ)
・UTF-16, UTF-8の場合 (ただし,UTF-8であってもBOMが必要)
の場合は/codepageの指定なしに正しくコンパイルできます。
それ以外の場合は,/codepageでコードページを指定する必要があります。
EUC-JPだと,51932でしょうか。ただし,全てのファイルをEUC-JPで書く必要があります。
ちなみに,Windowsのコードページ932に対してのMIME推奨名はWindows-31Jです。
まぁ,System.Text.Encodingはこの名前を受け付けてくれませんが……。
http://www.iana.org/assignments/character-sets/c …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルができないのですが...
-
classファイルを元に戻す
-
コンパイルエラーに出てくる、i...
-
javax.servlet は存在しません...
-
Eclipse3.5EEでJavaのコンパイ...
-
.jarファイルの中身って書き換...
-
XCodeでビルドをやり直すには?
-
javaの簡単なソースがコンパイ...
-
Javaのコンパイル結果が表示さ...
-
jasperとは
-
-deprecationとは?
-
javaが文字コードの影響でコン...
-
NetBeansのエラー
-
IIS環境でJAVAを使用したい
-
サクラエディタでjavaのプログ...
-
「識別子がクラス名でも名前空...
-
Javaでわからないことがありま...
-
HelloWorldのソースがコンパイ...
-
TeXで図を挿入できません.助け...
-
JavaMailのインストール方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.jarファイルの中身って書き換...
-
IIS環境でJAVAを使用したい
-
Eclipse3.5EEでJavaのコンパイ...
-
コンパイルエラーに出てくる、i...
-
javaが文字コードの影響でコン...
-
javax.servlet は存在しません...
-
「識別子がクラス名でも名前空...
-
サクラエディタでjavaのプログ...
-
TOMCAT_HOMEって?
-
Javaのコンパイル結果が表示さ...
-
eclipseの構文エラーについて
-
javaの簡単なソースがコンパイ...
-
java.lang.ClassNotFoundException
-
Jakarta POI のHSSFでのフッタ...
-
逆コンパイルの見方について
-
日本語対応 逆コンパイラについて
-
C言語について。
-
dokojavaのコンパイルについて
-
jasperとは
-
importしたパッケージが見つか...
おすすめ情報