日本語をEUC-JPに変換する方法を教えてください。
(例) アイウエオ → %A5%A2%A5%A4%A5%A6%A5%A8%A5%AA
今手元に環境が無いのでスクリプトを書いて確認はできませんが、
1.BASP21のKConvでEUCに変換
2.Server.URLEncodeでURLエンコード
で対応できると思います。
http://www.site-cooler.com/kwl/asp/13.htm#URLEncode
ASP講座 13章 [ Server オブジェクト ]
http://www.atmarkit.co.jp/fwin2k/win2ktips/312charcode/charcode....
@IT:Windows TIPS -- Tips:ファイルの文字コードを変換する
こちらは いかがでしょうか?
EUCには変換がどうするのでしょうか?
下記のソースでも A5 や A2 が現れません
s = ”複合機”
For ii = 0 To 6
For jj = 0 To 6
s1 = s
s1 = bobj.Kconv(s1, ii, jj)
s1 = Server.URLEncode(s1)
Response.Write(s1)
Next
Next
相変わらず環境が無いのですが、おそらくこれで行けると思うのですが・・・。
(BASP21のインストールは先に行ってください。)
Set bobj = Server.CreateObject(”basp21”)
Response.Write(Server.URLEncode(bobj.Kconv(”あいうえお”,2)))
%3F%3F%3F%3F%3F が出力されました。
%A5%A2%A5%A4%A5%A6%A5%A8%A5%AA になりませんよ。
http://www.hatena.ne.jp/1124458464#
人力検索はてな - ASP(VBScript) にて、 日本語をEUC-JPに変換する方法を教えてください。 (例) アイウエオ → %A5%A2%A5%A4%A5%A6%A5%A8%A5%AA ..
EUCでEUCに変換とありますが、目的によって回答が変わります。
aspのデフォルトの文字コードはSJISです(プログラム内の文字データはunicodeですが)。そのためEUCの文字データを正しく変数に格納することができません。
単純にaspからEUCでページ内容を出力するだけでいいなら、aspファイルをEUCで作成し、
<%@codepage=51932%>
<%
Response.Write(.....)
%>
とすれば、ページの文字コードはEUCになります。(上記ページの通り、一部コードに不一致がありますが)
http://www.hi-ho.ne.jp/babaq/basp21.html
BASP21 DLL
basp21のKconvメソッドでも、EUCには変換できているのです。しかし返値が文字列ではなく「バイト配列」であることに注意が必要です。
このままではResponse.Writeしても文字化けしますし、Server.URLEncodeでも期待する結果は返りません。
aspファイルの文字コードはSJISのままEUCの文字列を出力するのが目的なら、以下のコードでOKです。
Set bobj = Server.CreateObject(”basp21”)
Response.BinaryWrite(bobj.Kconv(”あいうえお”,2))
URLエンコードの結果が必要なら、無理矢理ですがこんな感じで。
txt = ”アイウエオ”
set basp = Server.CreateObject(”basp21”)
euc = basp.Kconv(txt, 2)
set xml = Server.CreateObject(”Msxml2.DOMDocument”)
set node = xml.createElement(”data”)
node.dataType = ”bin.hex”
node.nodeTypedValue = euc
for i = 0 to len(node.text) step 2
Response.Write(”%” + mid(node.text, i, i + 2))
next
VBScriptは不慣れなんで間違ってたらすいません。
ありがとうございます。
解決しました。少し手直しをしました、ソースを送ります。
Function ConvEUCUrlEncode(s)
Dim rc
set basp = Server.CreateObject(”basp21”)
euc = basp.Kconv(s, 2)
set xml = Server.CreateObject(”Msxml2.DOMDocument”)
set node = xml.createElement(”data”)
node.dataType = ”bin.hex”
node.nodeTypedValue = euc
for i = 1 to len(node.text) step 2
rc = rc & ”%” + UCase(mid(node.text, i, 2))
next
ConvEUCUrlEncode = rc
End Function
もうちょっと明細に
サンプルコードを出してくれると助かります。
よろしくお願いします。