JavaScriptのエスケープ関数でエンコードされた文字列をPythonで復元する方法

WBOY
リリース: 2016-06-16 08:42:36
オリジナル
1585 人が閲覧しました

問題が発生し、Python を使用して JavaScript のエスケープの漢字を復元する必要がありましたが、長時間検索しても答えが見つからなかったので、自分で解決策を詳しく調べる必要がありました。
まず、js
でテキストをエスケープするエンコーディングを見てみましょう。

コードをコピー コードは次のとおりです:

a =エスケープ('これはテキストの文字列です');
アラート(a);

出力:
コードをコピー コードは次のとおりです:

%u8FD9%u662F%u4E00%u4E32%u6587%u5B57

一見すると、json 形式に少し似ているように感じますが、同じ漢字「これはテキストの文字列です」をエンコードした標準的な json 形式を見てみましょう。
コードをコピー コードは次のとおりです:
# エンコーディング=utf-8
json をインポート
a = 'これはテキスト文字列です'
print json.dumps(a)

出力:

コードをコピーします コードは次のとおりです:"u8fd9u662fu4e00u4e32u6587u5b57"
実際、比較すると、js エスケープ エンコーディングの各文字は「%u」記号に 4 桁の文字エンコーディングを加えたものですが、json エンコーディングの各文字は「u」記号に 4 桁の文字エンコーディングを加えたものになります。文字列置換操作を使用して json 形式を復元し、json モジュールのロード
を使用できます。
コードをコピー コードは次のとおりです:
# エンコーディング=utf-8
json をインポート

# js エスケープ文字列エンコーディング
c = '%u8FD9%u662F%u4E00%u4E32%u6587%u5B57'

#Json オブジェクトを復元
jsonObj = '"'+"".join([(i and "\"+i) for i in c.split('%')])+'"'

print json.loads(jsonObj)

特に、「%」を「」記号に置き換えた後、二重引用符を使用して文字列を囲むことを忘れないでください。こうすることで、文字列が json オブジェクトと見なされ、json.loads が出力されるようになります
その後、ついにウェブサイトでもっと簡単な方法を見つけました。コードは次のとおりです:

コードをコピー コードは次のとおりです:
# エンコーディング=utf-8
c = '%u8FD9%u662F%u4E00%u4E32%u6587%u5B57'
print "".join([(len(i)>0 and unichr(int(i,16)) or "") for i in c.split('%u')])

実際、考え方は似ています。「%u」記号が置き換えられ、残りの各文字は 4 ビットの固定長文字エンコーディングになります。最後に、unichr は中国語の文字にデコードされます。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!