« 家のマシン構成 | トップページ | google app engineで家計簿作り »

2008年9月27日 (土)

unicodeのエスケープ・アンエスケープ

かなり久しぶりの投稿。
最近仕事で、djangoを使っているが、pythonを今まで敬遠していたため、
いまいち慣れない。
自ずとテンプレートエンジンを使うのではなく、サーバーから持ってきた
JSONデータを使って、javascriptで画面を動的に変更するようにしている。
JSONデータは日本語データが\u3042のようにエスケープされた状態で
渡ってくるので、デバッグ時に何のデータが入っていたのか解かりにくい。
そこで、解析用のHTMLを作成した。変換ボタン押下で、通常の文字列が
入っていた場合はエスケープし、エスケープされた文が入っていた場合は
通常の文字列に変換する。

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
  <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title>Unicode変換</title>
 <script type="text/javascript">
 function changeUnicode()
 {
 var str = document.getElementById("contents").value;
 var len = str.length;
        eval('var newStr="'+str +'"');
 var escapeStr = "";
 if(newStr.length == len)
 {
 var prefix = '\\u';
 for(var i=0;i<str.length;i++)
 {
 var charCode = str.charCodeAt(i);
 var hexStr = charCode.toString(16);
 if(charCode < 127)
 {
              escapeStr += str[i];
 continue;
 }
 switch(hexStr.length)
 {
 case 2:
                escapeStr += prefix + '00' +hexStr;
 break;
 case 3:
                escapeStr += prefix + '0' +hexStr;
 break;
 default:
                escapeStr += prefix + hexStr;
 }
 }
 document.getElementById("result").innerHTML=escapeStr;
 }
 else
 {
 document.getElementById("result").innerHTML=newStr;
 }
 }
 </script>
 </head>
  <body>
    <form>
      <textarea id="contents" rows=10 cols=50"></textarea>
      <input type=submit value="変換" onclick="changeUnicode();return false;"></input>
    </form>
    <div id="result"></div>
  </body>
</html>

|

« 家のマシン構成 | トップページ | google app engineで家計簿作り »

Ajax」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/68673/42609093

この記事へのトラックバック一覧です: unicodeのエスケープ・アンエスケープ:

« 家のマシン構成 | トップページ | google app engineで家計簿作り »