0

エンコーディングとして ks_c_5601-1987 (韓国語) を使用するページ A と、エンコーディングとして UTF-8 (韓国語) を使用するページ B があるとします。A から B に韓国語の文字列変数を渡す必要があります。2 つのページが異なるエンコーディングを使用しているため、B が Request() を使用して変数を受け取ると、変数がごちゃごちゃになります。

Bに渡すときに、Aの文字列変数をUTF-8にエンコードするにはどうすればよいですか? ここでは、両方のページを UTF-8 エンコーディング スキームとして設定することが最も賢明な解決策であることを認識していますが、ページ A は ks_c_5601-1987 エンコーディングに完全に依存するいくつかの dll を使用するため、残念ながらここではオプションではありません。

編集:答えを確認した後、先に進んでその方法を試しました。これは、可変メールボックスを get_list_center.asp に送信するコードです。

<!--mail_mail.asp, page in ks_c_5601-1987-->
<%
dim mailbox = "테스트"
Response.CodePage = 65001 'Response.write should now encode the string into UTF-8
%>

...
<frame name="get_list_center" scrolling="auto" marginwidth="0" framespacing="0" marginheight="0" frameborder="0" src="get_list_center.asp?mailbox=<%=mailbox%>">

これは、get_list_center.asp で変数を受け取る方法です。

<%
Session.Codepage=65001

Response.CharSet="UTF-8" 

response.Write CStr(response.codepage) & "<BR>"
response.Write CStr(session.CodePage) & "<BR>"
response.Write CStr(response.CharSet) & "<BR>"
response.codepage = 949
response.Write mailbox & "<BR>"
response.codepage = 65001
response.Write mailbox & "<BR>"
%>

結果は次のとおりです。

ここに画像の説明を入力

response.write の 949 (ks_c_5601-1987) バージョンと 65001 (UTF-8) バージョンの両方が壊れています。私が見逃しているものは他にありますか?

4

1 に答える 1

1

この質問の解決策を読むことで答えが得られると思います: internal string encoding

利用Reponse.Codepageすることで、投稿された変数がどのように解釈されるかに影響を与えることができます。そして、私が理解しているように、好きなエンコーディングに戻すことができます。


[アップデート]

iframe を使用しているため、リクエストをサーバーに送り返すときにエンコーディングを処理するのはブラウザです。そして、ブラウザは(私が理解しているように)元のページと同じエンコーディングでデータを送信します。したがって、iframe を含むページ A に charset=Korean がある場合、データは韓国語のエンコードを使用して送信されると考えられます。

ページ A の html タグで文字セットが定義されていますか? そうでない場合は、追加してからページ B で同じものを使用してみてください。

<meta charset="utf-8"> 

また、「테스트」はFILEエンコーディングの影響を受ける文字列リテラルであるため、適切なエンコーディングで asp ファイルを保存してください。

于 2013-02-06T14:21:55.487 に答える