ホームページ > ウェブフロントエンド > jsチュートリアル > 漢字のエスケープエンコードとアンエスケープデコードの文字化けの解決策_JavaScriptスキル

漢字のエスケープエンコードとアンエスケープデコードの文字化けの解決策_JavaScriptスキル

WBOY
リリース: 2016-05-16 16:42:51
オリジナル
2505 人が閲覧しました

今日のプロジェクトでは、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("&#369;&#1454;");
ログイン後にコピー
エディタの初期エンコーディングが原因であることがわかります。

Dreamweaver で中国語の文字を変更して戻し、test.html を再実行して、対応するエンコーディングを取得します:

%u811A%u672C%u4E4B%u5BB6
ログイン後にコピー

このとき、unescape を使用してデコードします:

var relstr=unescape("%u811A%u672C%u4E4B%u5BB6");
document.write(relstr);
ログイン後にコピー
元の正しい漢字「スクリプト ハウス」を取得しました。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート