- - PR -
utf-8のときだけaspxページが文字化けする
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-05 17:31
言語C# ASP.NetでWebアプリケーションを開発しています。
新規にプロジェクトを作成し、 aspxページのデザイン画面でプロパティを開き文字セットをutf-8にすると 実行時に画面内の日本語(たとえばラベルコントロール)が化けます。 Page ディレクティヴにcodePage="65001"が入っていますし実際のファイルコードも utf-8になっています。なのに化けます。 SJISやUNICODEなどでは文字化けがおこりません。 原因のわかる方いらっしゃるでしょうか? 以上よろしくお願いいたします。 VS.NET2003 + WindowsXP Proにおいて | ||||
|
投稿日時: 2004-01-06 14:36
asp.netで出力の「エンコーディング」を指定するにはWeb.configファイルの
以下の部分を設定するか(requestEncodingは入力エンコーディング指定) <configuration> <system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> ・ ・ あるいは@Pageディレクティブに ResponseEncoding="utf-8" のように記述します。 化けるといっても何が何に化けるのか、ですね。例えば「あいう」は どう文字化けするか。それによって、どのEncodingで書かれているものを どのEncodingとして(誤って)みているか、わかるのではないでしょうか。 @PageディレクティブのCodePageについては下記に記載があります。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/cpconpage.asp [ メッセージ編集済み 編集者: べる 編集日時 2004-01-06 14:55 ] | ||||
|
投稿日時: 2004-01-06 15:35
ご返答ありがとうございます。
JAVAはやったことがあるのですが、ASP.NETはまだ不慣れで.. いろいろ実験してみたところ、確かにcodePageやweb.configの設定によって自由に出力エンコーディングを変更できます。これは意図どおりの動きで問題ありません。 おかしいと思うのは、aspxの実際のファイルコードを"SJIS以外"に変えたときだけ、aspx ファイルに"生で"書かれているラベルコントロールなどの文字が出力時に化けます。プロパティ画面の文字セットでたとえばUTF-8にすると(一回閉じて開かないとだめかもしれないが)実際のファイルコードもSJISからUTF-8になります。出力結果をみるとどうもVSのコンパイラ(?)はファイルのコードをUTF-8にもかかわらずSJISと決めて処理しています。 実際のaspxファイルをたとえばUTF-8にしても正常に動かすことができるでしょうか? 出力がUTF-8なのでファイルもできればUTF-8にしておきたいのですが... [ メッセージ編集済み 編集者: ackkie 編集日時 2004-01-06 16:02 ] | ||||
|
投稿日時: 2004-01-06 20:14
web.config で fileEncoding="utf-8" を指定しても駄目ですか?
(あるいは「byte order mark プリフィックスを付けて保存された Unicode ファイルと UTF-8 ファイルは、fileEncoding の値とは無関係に、自動的に認識されます」らしいです) http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/gngrfglobalizationsection.asp | ||||
|
投稿日時: 2004-01-07 09:25
[ファイル]-[保存オプションの詳細設定…]にて任意のエンコードを選択することで解決できませんか?
#以下、追記 すいません。ちょっと横柄な書き方になってしまいました。(慌ててたので……。) ↓で、べる様がまとめてらっしゃいますが、もちろんya様ご提示の方法でもOKですね。 私のは違う方向からのアプローチということで。 [ メッセージ編集済み 編集者: He 編集日時 2004-01-08 01:05 ] | ||||
|
投稿日時: 2004-01-07 15:41
>ackkieさん
あ、そういう話でしたか、勘違いしてました。 [ファイル]>[名前をつけて・・を保存]で[保存]ボタンの横の▼を押して [エンコードつきで保存]を選び、エンコードを「utf-8 シグニチャ付き」で 保存すると文字化けせずに表示されました。 Heさんおっしゃってるの方法で、上書き保存したときに常に指定したエンコード で保存されるようです。 シグニチャなしの場合でも、yaさんのおっしゃってる方法でやると文字化け しないはずです。 | ||||
|
投稿日時: 2004-01-08 13:53
皆さんご返答ありがとうございます。
yaさん、べるさんのご指摘された方法でうまくいきました。 またyaさんのご指摘(BOM)でなぜUTF-8だけがうまくいかないのかも理解できました。 UNICODE(UTF-16)はBOM(シグネチャ)があるので自動認識するからなのですね。 UTF-8でもBOM(シグネチャ)をつけて保存したらできました。 またfileEncoding="utf-8"でもうまくいきました。 また以下の現象についても説明がつきます。 日本語環境でないのでデフォルトfileEncodingがsjisになってないからですね。 たとえUTF-8でおいたとしてもシグ付きかfileEncodingが設定されてないと動かないですね。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2085&forum=7 ほとんどの方はおそらくSJISで作成されているのでしょうか? あと、 > Heさん [ファイル]-[保存オプションの詳細設定…]のメニューを出したのですが、disableされていてうごきません。 なぜでしょうか?(デフォルトではないですよね。[ツール]-[カスタマイズ]-[コマンド]からドラッグアンドドロップしてだしたのですが...) [ メッセージ編集済み 編集者: ackkie 編集日時 2004-01-08 13:54 ] | ||||
|
投稿日時: 2004-01-08 17:00
表示されないようですね。HTML表示だと表示されています。 |