ASP(Server.UrlEncode)やPHP(urlencode())関数のエンコード結果や、aspやphpなどの動的言語を介してCOOKIESに直接書き込まれた漢字については、JSで読み込むとエンコードが発生します。つまり、最終的な文字列は urlencode でエンコードされており、クライアント側で JS からデータを読み取る必要がある場合があります。
この記事では、システム独自の関数を使用して js でこの問題を解決する方法について簡単に説明します。
この問題に遭遇した友人ならある程度は理解できるはずですが、現在、vbscript (URLDecode()) や javascript (UrlDecode() など、js のいくつかのカスタム関数がこの問題を解決するためにインターネット上で普及しています。 ))待って。これら 2 つの関数はどちらも、asp (Server.UrlEncode) および php (urlencode()) と相互に適切に通信できません。
vbscript (関数 URLDecode()) と javascript (関数 UrlDecode()) についても、この記事の最後に再掲します。
この記事の主役はJavaScript(UrlDecodedecodeURIComponent())ですが、この関数名はありふれていて個人的にはよくわかりません。結局のところ、jsにはシステム関数がたくさんあり、簡単です。見逃してください。心配は偶然この機能を発見しました!
エンコード関数: encodeURIComponent()
デコード関数: decodeURIComponent()
decodeURIComponent() 構文
decodeURIComponent(URIstring)
パラメータ: (URIstring) が必要です。エンコードされた URI コンポーネントまたはデコードされるその他のテキストを含む文字列。
戻り値: 16 進数のエスケープ シーケンスが、それが表す文字で置き換えられた URIstring のコピー。
例:
< ;script type="text/javascript">
var test1="トラブル";
var test2="トラブル"; :" encodeURIComponent (test1) "
");
document.write("Decode (original =" test2 "): " decodeURIComponent(test2));
結果:
エンコード (オリジナル =Trouble):トラブル
デコード (オリジナル =Trouble):トラブル
注: この記事は UTF-8 エンコード環境でのみテストされています。エンコーディング環境が異なると、ASP のコンパイルされたコード (Server.UrlEncode) が異なるように見えるため、テストする必要があります。
添付の再版:
vbscript (function URLDecode())
コードをコピー コードは次のとおりです:
javascript(function UrlDecode())其实还是柔和使用了vbscript,好像在javascript环境中,对于asc、hex、chr相关的转换,如 str.charCodeAt(0).toString(16) 及 String.fromCharCode(str) 在不同编码下,对于中文的编码结果还不统一。
比如: vbscript str2asc/asc2str
javascript str2asc/asc2str
演示:
如需引入外部Js需刷新才能执行]