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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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

解決済

1回答

1682閲覧

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

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サービスを構築するには理想的です。

0グッド

0クリップ

投稿2022/10/04 08:19

編集2022/10/05 19:49

内容

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/10/04 09:22

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

2022/10/04 09:24

ご指摘ありがとうございます修正しますね。
退会済みユーザー

退会済みユーザー

2022/10/04 09:27

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

2022/10/04 09:32

諸々追加しております。 よろしくお願いします。
退会済みユーザー

退会済みユーザー

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の設定周りを調べてみます。 ご考察いただきありがとうございました。
退会済みユーザー

退会済みユーザー

2022/10/04 10:23

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

2022/10/05 00:01

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

退会済みユーザー

2022/10/05 03:10

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

回答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
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moontowel

2022/10/05 09:28

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

退会済みユーザー

2022/10/05 10:49 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問