今日のプロジェクトでは、JavaScript のエスケープを使用して漢字をエンコードし、その後、アンエスケープを使用してデコードする必要がある状況に遭遇しました。コード セグメントをテストすると、文字化けが発生しました。
具体的な状況は次のとおりです:
まず、EditPlus を使用してテスト ページ test.html を開き、次の HTML コードを編集します:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>unescape测试</title> </head> <body> <script> var teststr=escape("脚本之家"); document.write(teststr); </script> </body> </html>
ページの印刷:
%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD
この時点で何かが間違っていることが、漢字に相当する文字数から見てもわかります。
次に、次のコードを使用して、unescape でデコードされた中国語の文字をテストします。
var relstr=unescape("%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD"); document.write(relstr);
解決策:
Dreamweaver で test.html ファイルを開いて問題を見つけてください。
元の段落
var teststr=escape("脚本之家");
になりました
var teststr=escape("ű֮");
Dreamweaver で中国語の文字を変更して戻し、test.html を再実行して、対応するエンコーディングを取得します:
%u811A%u672C%u4E4B%u5BB6
このとき、unescape を使用してデコードします:
var relstr=unescape("%u811A%u672C%u4E4B%u5BB6"); document.write(relstr);