人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: yamazakiis
●カテゴリ:コンピュータ
✍キーワード:A8 AA EUC-JP VBScript 日本語
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● andi
●0ポイント

http://www.hi-ho.ne.jp/babaq/basp21.html#0030

BASP21 DLL

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

1.BASP21のKConvでEUCに変換

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

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

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

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

◎質問者からの返答

もうちょっと明細に

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

よろしくお願いします。


2 ● きゃづみぃ
●0ポイント

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


3 ● andi
●0ポイント

http://a/

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

(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 になりませんよ。


4 ● rowlock
●70ポイント

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の文字データを正しく変数に格納することができません。

http://www2d.biglobe.ne.jp/~msyk/cgi-bin/charcode/bbs.cgi?c=gr&a...

文字コード掲示板

単純に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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ