none
Azure app serviceをvs online editorで開き、オンプレミスWindows Sever 2008 IISで動作確認済aspソースの実行時、日本語が文字化けします RRS feed

  • 質問

  • 全体状況ですが、オンプレミスWindows Sever 2008アプリとSQLデータベースをAzureに移行中の作業中に発生しています。

    以下の条件でAzure app serviceの実行時、日本語が文字化けします。

    1.Azure app servicevs online editorで開く

    2.オンプレミスWinodws Server2008で動作確認済のaspソースをUTF-8コード系で保存し、vs online editorでアップロードする

    3.aspソース内でVBスクリプトを使用してhtmlソースを動的に作成している

    4.aspソースの先頭行のソースは下記です

    <%@ LANGUAGE = VBSCRIPT %>

    そこで、質問ですが、

    aspソースコード上で、Azure環境の場合、コード系の指定が必要ですか。


    2019年6月30日 14:26

回答

  • 4.aspソースの先頭行のソースは下記です
    <%@ LANGUAGE = VBSCRIPT %>

    UTF-8 なのであれば、先頭行を下記に変更してみてください。

    <% @ CodePage="65001" Language="VBScript" %>
    1. ASP ファイルのコードページは、@CodePage ディレクティブによって設定されます。
    2. @CodePage ディレクティブが無い場合、IIS マネージャーの [ASP] の CodePage(コードページ)設定に従います。applicationHost.config で設定する場合は system.webServer/asp/codePage のセクションです。
    3. 上記サーバー設定も未設定(0)の場合は、OS 既定のコードページが使われます。

    なお上記は、ASP ファイルそのものの文字コード指定の話であって、各コンテンツ出力時の文字コード指定とは異なります。

    たとえば Response.Write の場合、Response.CodePage (現在の応答) や Session.CodePage (現在のセッション) で指定されたエンコードが使われます。

    HTML ページがブラウザ側でレンダリングされる際の文字コード指定は HTTP レスポンスヘッダーContent-Type の Charset 引数が使われます(これは Response.CharSet プロパティで一時的に上書きできます)し、それとは別に HTML の <meta> タグ指定も関係してきます。


    2019年6月30日 23:58
  • ご回答ありがとうございます。

    最初、先頭行を<% @ CodePage="65001" Language="VBScript" %>に置き換えてみましたが、

    日本語文字化けの現象は変わりませんでした。

    次に、<HTML>の前にResponse.Charset = "utf-8" を追加したところ、正しく日本語が表示されました。本件は解決です。


    2019年7月1日 13:36

すべての返信

  • 4.aspソースの先頭行のソースは下記です
    <%@ LANGUAGE = VBSCRIPT %>

    UTF-8 なのであれば、先頭行を下記に変更してみてください。

    <% @ CodePage="65001" Language="VBScript" %>
    1. ASP ファイルのコードページは、@CodePage ディレクティブによって設定されます。
    2. @CodePage ディレクティブが無い場合、IIS マネージャーの [ASP] の CodePage(コードページ)設定に従います。applicationHost.config で設定する場合は system.webServer/asp/codePage のセクションです。
    3. 上記サーバー設定も未設定(0)の場合は、OS 既定のコードページが使われます。

    なお上記は、ASP ファイルそのものの文字コード指定の話であって、各コンテンツ出力時の文字コード指定とは異なります。

    たとえば Response.Write の場合、Response.CodePage (現在の応答) や Session.CodePage (現在のセッション) で指定されたエンコードが使われます。

    HTML ページがブラウザ側でレンダリングされる際の文字コード指定は HTTP レスポンスヘッダーContent-Type の Charset 引数が使われます(これは Response.CharSet プロパティで一時的に上書きできます)し、それとは別に HTML の <meta> タグ指定も関係してきます。


    2019年6月30日 23:58
  • ご回答ありがとうございます。

    最初、先頭行を<% @ CodePage="65001" Language="VBScript" %>に置き換えてみましたが、

    日本語文字化けの現象は変わりませんでした。

    次に、<HTML>の前にResponse.Charset = "utf-8" を追加したところ、正しく日本語が表示されました。本件は解決です。


    2019年7月1日 13:36
  • アイシートレインラボictrainlabさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムに投稿くださいましてありがとうございます。

    本件、魔界の仮面弁士 さんより参考になる投稿が寄せられたようでなによりです。

    [回答としてマーク]機能は設定された投稿が後から参照しやすくなりますので、
    同じ問題でお困りの方のためにも参考になった投稿に設定いただけますと幸いです。

    お手数ですが、ご協力の程どうかよろしくお願いいたします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年7月3日 0:55
    モデレータ