teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記追加

2017/06/14 05:41

投稿

退会済みユーザー
answer CHANGED
@@ -4,4 +4,28 @@
4
4
 
5
5
  ASP.NET アプリはデフォルトで応答ヘッダに charset=utf-8 が指定されるので、UTF-8 でないと文字化けします。
6
6
 
7
- ということは質問者さんが View に書き込んだ「こんにちは、 さん」からレンダリングされてブラウザに送信されるバイト列の文字コードが UTF-8 ではないということのはずですが、それが何なのかが分かると解決のヒントになるかもしれません。
7
+ ということは質問者さんが View に書き込んだ「こんにちは、 さん」からレンダリングされてブラウザに送信されるバイト列の文字コードが UTF-8 ではないということのはずですが、それが何なのかが分かると解決のヒントになるかもしれません。
8
+
9
+ ------ 2017/6/14 14:40 追記 ------
10
+
11
+ 2017/06/14 13:31 の私のコメントで「VS2015 でも問題を再現できました。詳細は回答欄に追記しておきます」と書きましたが、それを以下に書きます。
12
+
13
+ VS2015 でも「ビューの追加」のダイアログからウィザードベースでビューを生成すると(すなわちスキャフォールディング機能を利用してビューを生成すると)、生成される .cshtml ファイルの文字コードは Shift_JIS になってしまいます。
14
+
15
+ その .cshtml ファイルに Visual Studio のエディタで日本語を書き込むと、理由不明ですがその文字は Unicode デコーダでデコードできないようで、REPLACEMENT_CHARACTER (U+FFFD ⇒ UTF-8 のバイト列は EF BF BD)に置き換えられ、その REPLACEMENT_CHARACTER がブラウザ上で � と表示されるという質問者さんと同じ問題が再現されました。
16
+
17
+ 従前の .NET ベースの MVC アプリであれば、先のレスでも書きましたが、.cshtml ファイルの文字コードは BOM 付きの UTF-8 になります。また、それを Shift_JIS で保存し直してから日本語を書き込んでも今回のような問題は出ないです。
18
+
19
+ 何故 Core ベースのアプリでは Visual Studio に自動生成させた .cshtml ファイルの文字コードは Shift_JIS になってしまうのか、何故デコードできないのかは謎です。
20
+
21
+ 一般的にまだ枯れてないフレームワークにはいろいろ不具合があると思いますが、今回の問題もそういった不具合の一つということでしょうか。
22
+
23
+ ちなみに、ビューのフォルダを右クリック⇒[追加(D)]をクリック ⇒[新しい項目(W)...]をクリック ⇒[MVC ビューページ]を選択して名前を付けて[追加(A)]をクリック・・・で生成される空の .cshtml ファイルは UTF-8 になりました。なので、やはり UTF-8 になるべきなのであろうと思います。
24
+
25
+ 自分の環境は以下の通りです。
26
+
27
+ Visual Studio 2015 Community 2015 Update 3
28
+ ASP.NET Core Web Application (.NET Core) のテンプレート使用
29
+ .NET Framework 4.6.1
30
+ Windows 10 Professional 64-bit
31
+ IIS 10.0 Express