ASP(VBScript) にて、

日本語をEUC-JPに変換する方法を教えてください。
(例) アイウエオ → %A5%A2%A5%A4%A5%A6%A5%A8%A5%AA 

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/08/19 22:34:24
  • 終了:--

回答(4件)

id:andi No.1

andi回答回数448ベストアンサー獲得回数02005/08/19 23:25:11

今手元に環境が無いのでスクリプトを書いて確認はできませんが、

1.BASP21のKConvでEUCに変換

2.Server.URLEncodeでURLエンコード

で対応できると思います。

http://www.site-cooler.com/kwl/asp/13.htm#URLEncode

ASP講座 13章 [ Server オブジェクト ]

id:yamazakiis

もうちょっと明細に

サンプルコードを出してくれると助かります。

よろしくお願いします。

2005/08/19 23:46:23
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982005/08/19 23:34:19

http://www.atmarkit.co.jp/fwin2k/win2ktips/312charcode/charcode....

@IT:Windows TIPS -- Tips:ファイルの文字コードを変換する

こちらは いかがでしょうか?

id:yamazakiis

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

2005/08/20 00:02:18
id:andi No.3

andi回答回数448ベストアンサー獲得回数02005/08/20 00:54:03

相変わらず環境が無いのですが、おそらくこれで行けると思うのですが・・・。

(BASP21のインストールは先に行ってください。)


Set bobj = Server.CreateObject(”basp21”)

Response.Write(Server.URLEncode(bobj.Kconv(”あいうえお”,2)))

id:yamazakiis

%3F%3F%3F%3F%3F が出力されました。

%A5%A2%A5%A4%A5%A6%A5%A8%A5%AA になりませんよ。

2005/08/20 02:10:24
id:rowlock No.4

rowlock回答回数16ベストアンサー獲得回数12005/08/20 06:46:23

ポイント70pt

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になります。(上記ページの通り、一部コードに不一致がありますが)

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は不慣れなんで間違ってたらすいません。

id:yamazakiis

ありがとうございます。

解決しました。少し手直しをしました、ソースを送ります。

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

2005/08/20 14:22:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません