質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。

Q&A

解決済

AzurePipelinesでデプロイしたWebアプリの文字化けについて

moontowel
moontowel

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。

1回答

0グッド

0クリップ

536閲覧

投稿2022/10/04 08:19

編集2022/10/04 09:31

内容

VS2022CommunityでASP.NET CoreWebAPI(.net6)を作成し、Azure WebAppsにデプロイしています。

中身はテンプレートで自動で作成されるControllerのままですが、日本語を返すように編集し、AzurePipelinesでci/cdを構築しデプロイしたところ、下記のように日本語が文字化けしてしまいます。
・ソース(Controller)

[ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase { private static readonly string[] Summaries = new[] { "寒い", "Warm", "Balmy", "暑い" }; private readonly ILogger<WeatherForecastController> _logger; public WeatherForecastController(ILogger<WeatherForecastController> logger) { _logger = logger; } // devops test [HttpGet(Name = "GetWeatherForecast")] public IEnumerable<WeatherForecast> Get() { return Enumerable.Range(1, 3).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = Random.Shared.Next(-20, 55), Summary = Summaries[Random.Shared.Next(Summaries.Length)] }) .ToArray(); } }

・postmanでのリクエスト結果(2件目のsummaryで文字化け)

[ { "date": "2022-10-05T09:29:56.1794685+00:00", "temperatureC": 24, "temperatureF": 75, "summary": "Balmy" }, { "date": "2022-10-06T09:29:56.1797569+00:00", "temperatureC": 31, "temperatureF": 87, "summary": "Š¦‚¢" // →文字化け }, { "date": "2022-10-07T09:29:56.1797597+00:00", "temperatureC": 41, "temperatureF": 105, "summary": "Balmy" } ]

試したこと

・VS2022Communityから直接Azureに発行したところ、文字化けは発生しなかった

直接デプロイすると文字化けしないので、AzurePipelinesのci/cdの辺り(特にpipelinesのコンパイル)かなと思うのですが、エンコーディングを指定するようなところも見当たりません。
下記はpipelinesのyamlファイルになります。どなたかご教授いただけますでしょうか?

trigger: branches: include: - develop variables: - name: solution value: '**/*.sln' - name: buildPlatform value: 'Any CPU' - name: buildConfiguration value: 'Release' stages: - stage: __default jobs: - job: Job pool: vmImage: 'windows-latest' steps: - task: NuGetToolInstaller@1 - task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' - task: VSBuild@1 inputs: solution: '$(solution)' msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.ArtifactStagingDirectory)"' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - task: VSTest@2 inputs: platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container'

補足情報(FW/ツールのバージョンなど)

IDE:VisualStudio2022Community
Webサーバー:AzureWebApps

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

SurferOnWww

2022/10/04 09:22

> 日本語が文字化けしてしまいます。 それじゃあ分かりません。どうなるのか例を書きましょう。
moontowel

2022/10/04 09:24

ご指摘ありがとうございます修正しますね。
SurferOnWww

2022/10/04 09:27

ASP.NET のタグも付けてください。ASP.NET Web API は普段見てないので返事があって見逃すことがあるという個人的事情からのお願いです。
moontowel

2022/10/04 09:32

諸々追加しております。 よろしくお願いします。
SurferOnWww

2022/10/04 10:04

対応いただきありがとうございました。 せっかく対応いただいたのにすみませんが、自分には原因は分からないです。なので、想像にすぎませんが・・・ Visual Studio で編集して保存する時ファイルの文字コードが Shift_JIS になるファイルがあって、Visual Studio でコンパイルする場合はそこはちゃんと認識してくれて問題ないのですが、UTF-8 を期待しているコンパイラでは文字化けするということがありました。 それと似たような話ではなかろうかと思いました。
moontowel

2022/10/04 10:18

devopsはutf-8ということは情報でありましたので、その辺りも怪しいですね。 ただAzureに直接デプロイすると文字化けしない現象も謎ですが・・・ vsでのutf-8の設定周りを調べてみます。 ご考察いただきありがとうございました。
SurferOnWww

2022/10/04 10:23

> ただAzureに直接デプロイすると文字化けしない現象も謎ですが・・・ それはコンパイルした後の話なので、開発環境で問題が出なければ、それをデプロイしたものも問題は出ないはずです。
moontowel

2022/10/05 00:01

>開発環境で問題が出なければ、それをデプロイしたものも問題は出ない そうなんですよね、なのでローカルの環境の問題ではなく、azure pipelinesのコンパイラなのかなーと思ってはいます。
SurferOnWww

2022/10/05 03:10

質問のコントローラのファイルの文字コードは調べてみましたか? Visual Studio 2022 のテンプレートで作った Web API のものなら Shift_JIS になっているのでは? あとで回答欄にその画像を貼っておきます。

回答1

0

ベストアンサー

上の質問のコメントで、

Visual Studio で編集して保存する時ファイルの文字コードが Shift_JIS になるファイルがあって、Visual Studio でコンパイルする場合はそこはちゃんと認識してくれて問題ないのですが、UTF-8 を期待しているコンパイラでは文字化けするということがありました。

それと似たような話ではなかろうかと思いました。

質問のコントローラのファイルの文字コードは調べてみましたか? Visual Studio 2022 のテンプレートで作った Web API のものなら Shift_JIS になっているのでは? あとで回答欄にその画像を貼っておきます。

と書きましたが、その「あとで回答欄にその画像を貼っておきます」と書いた件を以下に書きます。

Visual Studio 2022 のテンプレートを使って .NET 6.0 で Web API のプロジェクトを作ると、WeatherForecastController.cs というファイルが自動生成されますが質問に貼ってあるコードはそれですよね?

であればそのファイルの文字コードは Shift_JIS になっているはずです。

Visual Studio で WeatherForecastController.cs を開いて、[ファイル(F)]⇒[名前を付けて WeatherForecastController.cs を保存(A)...]をクリックすると、

イメージ説明

以下のダイヤログが表示されるので、[エンコード付きで保存(V)...]をクリックすると、

イメージ説明

「保存オプションの詳細設定」ダイアログが表示されます。その[エンコード(E):]を見ると Shift_JIS になっているはずです。

イメージ説明

Visual Studio はその設定(Shift_JIS)でも日本語が文字化けすることはありませんが、AzurePipelines ci/cd は UTF-8 でなければならないとするとそこで文字化けすると思います。

文字コードを変更するなら以下のように[エンコード(E):]の設定を変えてから[OK]ボタンをクリックしてください。以下の画像では BOM 付の UTF-8 にしています。BOM 無しにも設定できます。

イメージ説明

投稿2022/10/05 03:48

編集2022/10/05 08:53
SurferOnWww

総合スコア17614

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

moontowel

2022/10/05 09:28

本日azure devopsにてgitリポジトリを見たところControllerのファイルが文字化けしていたので、ファイルのエンコードを確認するとANSIになっておりました。そしてこちらをutf-8(BOM)にしたところ文字化けは解消されました。 おっしゃるようにVS(ASP.NET Core WebAPI .NET6)のテンプレートのファイルはANSIのようですね。 解決後でしたが、ベストアンサーにさせていただきますね。 それにしてもなぜテンプレートファイルだけANSIなのか・・・
SurferOnWww

2022/10/05 10:49 編集

> ファイルのエンコードを確認するとANSIになっておりました。 メモ帳で見たのですかね。であれば ANSI = Shift_JIS です。なので、私が質問のコメントに書いたこと、回答に書いたことは正しかったということです。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。