ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

JavaScriptコミュのencode & decode

  • mixiチェック
  • このエントリーをはてなブックマークに追加
Javascriptのみの処理で、
たとえば、「マクロス」を「%83%7D%83N%83%8D%83X」
または、「%83%7D%83N%83%8D%83X」を「マクロス」
などと変換するにはどうしたら良いのでしょうか?

調べた結果、escapeやunescapeではできないですし、encodeURIなどを使ってもやり方がわかりません。
どのようにすればよいでしょうか?

コメント(13)

%83%7D%83N%83%8D%83Xってのは何処から得た値でしょうかね。
http://jsm.suepon.com/script/jsm38.html
っていうやり方も有りますけど。
もとの日本語の文字コード次第だとおもいますが・・・
escapeで変換されるコードもブラウザによって違いがあるみたいです。
charsetによって異なりますよね。
Shift_JIS
ISO-2022-JP
EUC-JP
UTF-8
とか…
とりあえず、スクリプトを書いていて、日本語をはき出したりするとそうなるんですよ。あと、Firefoxで同じ処理をしようとすると、IEではOKなのにfirefoxでは常に、URLエンコード
された文字列が表示されて困っています。
URLデコードできるやり方、もしくはこのような事を回避できるやり方は無いのでしょうか?
「%83%7D%83N%83%8D%83X」なら Shift_JIS でしょうねえ。
N とか X とかアスキーまで進入してるし。

でも普通、そんな自動変換なんてされたりしないと思うw
元のスクリプトで何やってんのかわかんないけど。
フォームから値取ってくるってやつかねえ。

昔そゆのやった気したけど忘れちゃったw
これが Shift_JIS じゃなくて UTF-8 だったら、変換コード書くのは楽なんですがねー(笑)

> 回避 : HTML?を UTF-8 で書こう。(ぇー
サーバーで自動でインデックスを表示。
その表示されたファイルの名前をjavascriptで読み込み、ファイルの種類(拡張子で判別)によって処理をする。
で、ある拡張子は別窓で開く事になっているが、そこでそのファイル名&ディレクトリー名も表示する用になっている。だから何も特別エンコードみたいな処理はしていない。

表示されたファイルの名前の取り込み方方法は、
<html><head>
<script src="/script/scriptname.js"></script>
</head><body>
<a href="マクロス.txt">マクロス.txt</a>
</body></html>
っとこのような感じになります。

ちなみに別窓で開いた時にはき出された中身を[表示]→[ページのソース]でみると
<html><head>
<script src="/script/scriptname.js"></script>
</head><body>
<p>%83%7D%83N%83%8D%83X</p>
</body></html>
という感じに記述されています。

ちなみに「%83%7D%83N%83%8D%83X」=「マクロス」です。
なので、私が知りたい事は
この表示させる段階でFirefoxやMozillaにてこの%83%7D%83N%83%8D%83Xなような表示をしないで貰うにはどうしたらよいのか?IEでは起こりません。です。簡単にデコードの記述をいれれば良いのだと思うのですが、やり方を教えていただければありがたいです。
http://mixi.jp/view_bbs.pl?id=1340207
この人かw
関連のがあったら今度から書いてね・・・。わかりやすくなるから。

つまり、サーバで表示されるHTMLで、
<a href="マクロス.txt">マクロス.txt</a>
↑が、内部的に
<a href="%83%7D%83N%83%8D%83X.txt">マクロス.txt</a>
↑こうなってて、
で、その JS でとるときに、href の値を取得してくるよーな処理してるから、「%83%7D%83N%83%8D%83X」 ってなるんでしょ?
そらリンクはURLエンコードされるわなw IEは日本語でも行っちゃうけど。

だったら、新しい(作りたい) href の値は、古い(サーバからの) href の値からとって、新しいリンクテキストは、古いリンクテキストから取れば解決するんじゃないの?
わざわざ変換するまでもなく。

図解?すると、

※ <a href="マクロス.txt">マクロス.txt</a>
=(<a href="%83%7D%83N%83%8D%83X.txt">マクロス.txt</a>)
→ href値「%83%7D%83N%83%8D%83X.txt」 だけ取得
→ 「%83%7D%83N%83%8D%83X」の部分を「マクロス」に直す処理
→ <a href="href値">href値をデコードしたもの</a>
= <a href="%83%7D%83N%83%8D%83X.txt">マクロス.txt</a>

※ <a href="マクロス.txt">マクロス.txt</a>
=(<a href="%83%7D%83N%83%8D%83X.txt">マクロス.txt</a>)
→ href「%83%7D%83N%83%8D%83X.txt」と text「マクロス.txt」を取得
→ <a href="href値">text値</a>
= <a href="%83%7D%83N%83%8D%83X.txt">マクロス.txt</a>

の方が簡単じゃんねえ? だめな理由とかあったらまた。
> FirefoxやMozillaにてこの%83%7D%83N%83%8D%83Xなような表示をしないで貰うには

基本、サーバに上げるときはファイル名に日本語使わないw
再度質問をします。
Javascriptだけを使用し、「%83%7D%83N%83%8D%83X」というような文字列を日本語にする事はできるのでしょうか?できるとすればどのように記述すればいいのでしょうか?
それが知りたいのです。
そして、基本、基本ではないは関係無く日本語は絶対に使用しなければいけない事なのです。
"基本的な"やり方でマッピングテーブルを用意して地道にマッピングすればいいんでない?
"基本的な"やり方でぐぐってみるとかね。
# UTF-EUC-SJIS-JIS 間の escape-unescape ができるライブラリ

http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html

<script type="text/javascript" src="ecl.js"></script>
<script type="text/javascript">
alert( UnescapeSJIS('%83%7D%83N%83%8D%83X') );
</script>

今回のは、役に立たないトピックのまま残るのもなんだし、
また、他の人の別の何かの役に立つかもしれないので、
その人の検索の手間を省くために、一応、挙げてみたものです。

個人的には、他の方法で同じようなことができるのなら、
こんな余計な手間かけない方がいい、と思うのは変わりません。
以上です。
おかげさまでやりたい事が簡単にできました!
それにしても、あのライブラリすごいですね。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

JavaScript 更新情報

JavaScriptのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。