- PR -

cgiとasp.netの連携について

投稿者投稿内容
れん
会議室デビュー日: 2004/11/11
投稿数: 5
投稿日時: 2005-03-29 17:12
メール送信画面にて、送信画面の動作部分をCGIで、
メール送信処理の部分をASP.NETで作成しています。

やっと送信処理まで作り終わり、さてテストでも
してみようかと処理を実行したところ、文字化けが
発生しました。

1バイト文字は問題ないのですが、2バイト文字が
なぞの文字列になっております。

 例)
  「姓1」と書いたはずの文字列->「ZC1」

文字コードが違うのかなと思い、ASP側で受け取った
文字列を以下の処理で変換してみました。

 ※CGIからうけとった文字列を格納した変数「strCGI_Moji」

 Dim bytTemp As Byte()
 Dim strTemps As String

 bytTemp = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(strCGI_Moji)
 strTemps = System.Text.Encoding.GetEncoding("UTF-8").GetString(bytTemp)

変換しても、わけのわからない文字のままでした。

ひょっとしてCGIとASP.NETというのは、通常このように連携させたりはしないの
でしょうか?

よろしくご教授お願い致します。

[ メッセージ編集済み 編集者: れん 編集日時 2005-03-29 17:14 ]
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-03-29 18:07
肝心の文字コードはどのようになっているの?
どの時点で文字化けが発生しているの?
ASP.NETと他の何かで書いたCGIとの連携はどのような方法で実現しているの?
他の何かで書いたCGIは、何を使って作ったの?Java?Perl?C言語?
って辺りを明確にしないと中々解決しないと思う。

ASP.NETは標準ではUTF-8を使用するんだけど、利用する文字コードは全てUTF-8で統一しているんだよね?

引用:

れんさんの書き込み (2005-03-29 17:12) より:
ひょっとしてCGIとASP.NETというのは、通常このように連携させたりはしないの
でしょうか?


普通はしない。だって分離連携させたとして、何かメリットある?

_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/

[ メッセージ編集済み 編集者: 甕星 編集日時 2005-03-29 18:07 ]
猫山みやお
大ベテラン
会議室デビュー日: 2004/09/09
投稿数: 119
投稿日時: 2005-03-29 18:19
メールの送信なら.NETだけで出来るのでは?
れん
会議室デビュー日: 2004/11/11
投稿数: 5
投稿日時: 2005-03-29 18:23
ご返信ありがとうございます。

>肝心の文字コードはどのようになっているの?

甕星さんにこのご指摘を受けて、調べてみました。

CGI側のうち、
.html と .tmpはShift-Jis、
       .cgiはEUC、
ASP側は、  すべてUTF-8、
でした。 

>どの時点で文字化けが発生しているの?
>ASP.NETと他の何かで書いたCGIとの連携はどのような方法で実現しているの?

入力画面(.html)から.cgiを起動いたしまして、
.tmpを元に確認画面を表示、までは問題ありません。

そのつぎにフォームロードイベントを利用して
ASP側でメール送信を行っているのですが、
そこで受け取っている文字列をみてみるとすでに
化けております。

>他の何かで書いたCGIは、何を使って作ったの?Java?Perl?C言語?

Perlで書いたものだと思います。

>ASP.NETは標準ではUTF-8を使用するんだけど、利用する文字コードは全てUTF-8で統一しているんだよね?

.html、.cgi、.tmp、.pl、すべての文字コードを「UTF-8」にすれば
化けなくなる、ということなのでしょうか?(すぐに試してみます)

>
>引用:
>--------------------------------------------------------------------------------
>
>
>れんさんの書き込み (2005-03-29 17:12) より:
>ひょっとしてCGIとASP.NETというのは、通常このように連携させたりはしないの
>でしょうか?
>
>--------------------------------------------------------------------------------
>
>
>普通はしない。だって分離連携させたとして、何かメリットある?

デザイナー部門がCGIで、プログラミング部門がASP.NETで開発を行っているため、
このような連携となりました。。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-03-29 18:44
引用:

れんさんの書き込み (2005-03-29 18:23) より:
CGI側のうち、
.html と .tmpはShift-Jis、
       .cgiはEUC、
ASP側は、  すべてUTF-8、
でした。 


ちなみにそういうことではなくて、ASP.NETで受け取る予定の文字列(CGIから送られて?くる文字列)がどういう仕様なの?って話だと思います…

# ってかいろんな箇所のいろんなタイミングやらなんやらでの
# コードがごちゃ混ぜに語られてるので、あまり意味がないような気がす。

引用:

入力画面(.html)から.cgiを起動いたしまして、
.tmpを元に確認画面を表示、までは問題ありません。

そのつぎにフォームロードイベントを利用して
ASP側でメール送信を行っているのですが、
そこで受け取っている文字列をみてみるとすでに
化けております。


これも、この間がどうなっているかが重要なんですよね。
# ASP.NETのページにPOST?
れん
会議室デビュー日: 2004/11/11
投稿数: 5
投稿日時: 2005-03-29 18:57
>メールの送信なら.NETだけで出来るのでは?

 はい、本来の仕様ではそうでした。
 デザインがからんでややこしくなったのですが・・・。

>ちなみにそういうことではなくて、ASP.NETで受け取る予定の文字列(CGIから送られて?くる文字列)がどういう仕様なの?って話だと思います…

 文字列の文字コードは、(おそらく)Shift-Jisかと思われます。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-03-29 19:15
引用:

れんさんの書き込み (2005-03-29 18:57) より:

 文字列の文字コードは、(おそらく)Shift-Jisかと思われます。


だったらASP.NET側で使用する文字コードをShiftJISにすれば化けないんじゃない?

#でも、開発に使うミドルウェアをPerlかASP.NETに統一するのが最良だと思う。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
れん
会議室デビュー日: 2004/11/11
投稿数: 5
投稿日時: 2005-03-29 19:26
>だったらASP.NET側で使用する文字コードをShiftJISにすれば化けないんじゃない?

 .aspxと.aspx.vbと.xmlをShift-Jisにする、ということでしょうか?

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