@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

エンマック文字化け

1
投稿者投稿内容
まじめ
会議室デビュー日: 2005/02/22
投稿数: 6
投稿日時: 2005-04-11 11:03
Webサーバの開発をしていますが、クライアントにて、以下のようにメッセージを
ポップアップ画面に表示するとき、エンマックが文字化けになります。

string rtnMsg = "パス\"F:\\200504\\01\\WT0503105959.csv\"へのアクセスが拒否されました";
string strScript="<script type='text/javascript' charset='UTF-8'>alert('"+rtnMsg+"');";
strScript+="</script>";
this.Response.Write(strScript);

C#で開発したのですが、出力ファイル名をHttpUtility.UrlEncodeで変換しても
エンマックが正しく表示されない。どうしたらいいのでしょうか
ご教示お願いします
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2005-04-11 17:27
こんにちは。
回答ではありません。

>エンマック
とは、なんでしょうか?
(円マーク[yen sign]のことなのかなぁ。。。)
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-04-11 22:25
 問題はHttpUtility.HtmlEncodeメソッドを使用することで解決しますが。。。


 “エンマック”ですか。その呼称は初めて聞きました。
 Response.Writeメソッドは、よほどのことでないかぎり、使用するべきではありません。HTMLの構成が崩れます。RegisterStartupScriptメソッドなどを使用しましょう。
 アプリケーションの対象などにもよりますが、サーバーの物理的なパスを表示するのは、どうかと。。。

_________________
まじめ
会議室デビュー日: 2005/02/22
投稿数: 6
投稿日時: 2005-04-13 10:39
すみません、「エンマック」は円マークの誤りです

ご教示の通り、HttpUtility.HtmlEncodeとRegisterStartupScriptメソッドを使って、試してみましたが、円マークはやはり文字化けになります。

ソースは以下のようです

string rtnMsg = "パス\"A:\\200503\\01\\QD050301111041.csv\"へのアクセスが拒否されました";
if ( rtnMsg.IndexOf("\\") >= 0 )
{
int first = rtnMsg.IndexOf("\"");
int last = rtnMsg.LastIndexOf("\"");
if ( first >= 0 && last >= 0 && first != last )
{
string fname = rtnMsg.Substring(first+1,last-first-1);
rtnMsg = rtnMsg.Replace(fname,HttpUtility.HtmlEncode(fname));
}
}
string strScript="<script type='text/javascript' charset='UTF-8'>alert('"+rtnMsg+"');";
strScript+="</script>";
this.RegisterStartupScript("test",strScript);
1

スキルアップ/キャリアアップ(JOB@IT)