問題点
Visual Studio 2019でAzure Functionsのテンプレートを使用すると、作成されるファイルのエンコードがANSI(Shift-JIS)になります。普通に使っている分には困らないと思いますが、Azure DevOpsとかにそのままファイルを上げてしまうと、ブラウザから参照したとき、日本語部分がもれなく文字化けします。
- 問題点
- 環境
- Azure Functionsのアプリケーションを作成する
- 生成されたファイルの文字コードを確認
- 文字コードを変更する
- 新しくAzure Functionsのクラスファイルを追加した場合
- プロジェクトファイルの文字コード
環境
- Visual Studio 2019 (16.1.5)
- Azure Functions v2 (.NET Core) テンプレートを使用
Azure Functionsのアプリケーションを作成する
Visual Studio 2019を起動して、新しくAzure Functionsのアプリケーションを作成します。
今回はAzure Functions v2 (.NET Core) のテンプレートを用います。またトリガーとかストレージアカウントとかは適当に選択します。
生成されたファイルの文字コードを確認
すると、Function1.csというファイルが生成されます。実際に文字コードがどうなっているのか確認してみます。
まずFunction1.csファイルを開いて、Visual Studioの [ファイル] メニューから、[名前を付けて Function1.cs を保存] を選択します。
[名前を付けてファイルを保存] のダイアログが開くので、[上書き保存] ボタンの右側にあるドロップダウンを開き、[エンコード付きで保存] を選択します。
すると、そのファイルがどの文字コードで保存されているかを確認することができます。図の通り、既定ではANSI (Shift-JIS) で保存されていることがわかります。
文字コードを変更する
そのまま [エンコード] のドロップダウンから、[Unicode (UTF-8 シグネチャなし) - コードページ 65001] を選択することでBOMなしUTF-8に変更することができます。BOMありにする場合はシグネチャありのほうを選択してください。
新しくAzure Functionsのクラスファイルを追加した場合
プロジェクトに対して新しくAzure Functionsのクラスファイルを追加した場合も、同様に文字コードはANSIになります。
ただし、追加するファイルの名前に日本語を使用した場合、文字コードはBOMなしUTF-8になります。
プロジェクトファイルの文字コード
プロジェクトファイルは、ANSI (Shift-JIS) となります*1。
他のエディターで無理やり文字コードを変更することはできますが、Visual Studioで変更を加えると、ANSIに戻ってしまいます。プロジェクトファイルの文字コード変更は今 (2019/7/7) のところ諦めるしかないかもしれません。よくわからない謎仕様ですね。UTF-8にそろえるようフィードバックを出しておきました。
2019/07/16 追記 この件バグとして取り扱ってもらえたようです。Azure FunctionsのGitHubにバグとして取り込まれました。詳細は以下より参照ください。