首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

关于 Javascript Tidy 的中文编码有关问题

2012-03-07 
关于 Javascript Tidy 的中文编码问题 JavascriptTidy(只支持Firefox)来自:http://rick.measham.id.au/pas

关于 Javascript Tidy 的中文编码问题

Javascript   Tidy(只支持Firefox)

来自:
http://rick.measham.id.au/paste/jstidy.htm
http://www.howtocreate.co.uk/tutorials/jsexamples/JSTidy.html

我改进了一下:
http://www.wjmhxx.com/shortway/Tools/JsTidy1.htm
http://www.wjmhxx.com/shortway/Tools/JsTidy2.htm

改进说明:
1、代码缩进;
2、//注释的保留。我的保留方法很简陋粗鄙,有更好的么?(因为我没有系统学习Javascript的)。/*...*/形式的注释尚未思考。
3、中文字符的编码问题未解决。
比如:
alert( "你好! ");
转换后成了:
alert( "\u4F60\u597D\uFF01 ");
不利于阅读。我只能在EmEditor中自编一个宏进行替换。

附   http://www.wjmhxx.com/shortway/Tools/JsTidy1.htm   源代码(因为网络问题,有时打不开):

===============================================

<HTML>

<HEAD>
<META   NAME= "keywords "   CONTENT= "Javascript   Tidy;Js   Tidy;JsTidy ">
<META   HTTP-EQUIV= "Content-Type "   CONTENT= "text/html;   charset=utf-8 ">
<SCRIPT>

function   tidy()
{
var   D   =   document.getElementById( "A ").value;
D   =   D.replace(/^(\s*)(.*?)\/\/\s*?([^\s].*?)$/gm,   "$1$2\n$1var   rem   =   new   Function(\ "$3\ ");\n ");

D   =   D.replace(/(var   rem   =   new   Function\(\ ".*?)\ "(.*?)\ "(.*?)\ "(.*?)\ "(.*?\ "\);)$/gm,   "$1&rem;$2&rem;$3&rem;$4&rem;$5 ");
D   =   D.replace(/(var   rem   =   new   Function\(\ ".*?)\ "(.*?)\ "(.*?)\ "(.*?\ "\);)$/gm,   "$1&rem;$2&rem;$3&rem;$4 ");
D   =   D.replace(/(var   rem   =   new   Function\(\ ".*?)\ "(.*?)\ "(.*?)\ "(.*?\ "\);)$/gm,   "$1&rem;$2&rem;$3&rem;$4 ");
D   =   D.replace(/(var   rem   =   new   Function\(\ ".*?)\ "(.*?)\ "(.*?\ "\);)$/gm,   "$1&rem;$2&rem;$3 ");
D   =   D.replace(/(var   rem   =   new   Function\(\ ".*?)\ "(.*?)\ "(.*?\ "\);)$/gm,   "$1&rem;$2&rem;$3 ");
D   =   D.replace(/(var   rem   =   new   Function\(\ ".*?)\ "(.*?)\ "(.*?\ "\);)$/gm,   "$1&rem;$2&rem;$3 ");
D   =   D.replace(/(var   rem   =   new   Function\(\ ".*?)\ "(.*?\ "\);)$/gm,   "$1&rem;$2 ");


//Debug
//document.getElementById( "B ").value   =   D;   Break();//Debug

eval( "function   plzTidy(){ "   +   D   +   "} ");
store   =   document.getElementById( "store ");
store.value   =   plzTidy;
var   X   =   store.value;

//Debug
//document.getElementById( "B ").value   =   X;   Break();

X   =   X.replace(/function   plzTidy\(\)   \{/,   " ").replace(/\}\s*$/,   " ").replace(/([\r\n]+)/g,   "$1 ");

//   Four   spaces   to   a   Tab(\\t)
while   (X.search(/^(\t*)   {4}/gim)   >   -1)
{
X   =   X.replace(/^(\t*)   {4}/gim,   "$1\t ");
}

// "{ "   and   "} "   at   a   new   line.
X   =   X.replace(/^(\t+)([^   \r\n\{][^\r\n\{]*)   *\{$/gim,   "$1$2\n$1\{ ");


X   =   X.replace(/^(\t+)\}   *([^   \r\n\}][^\r\n\}]*)$/gim,   "$1\}\n$1$2 ");

X   =   X.replace(/([   \t]+)$/gim,   " ");
X   =   X.replace(/([\r\n])[\r\n]/gim,   "$1 ");

X   =   X.replace(/&rem;/gim,   "\ " ");
X   =   X.replace(/var   rem   =   new   Function\(\ "(.*?)\ "\);/gim,   "\/\/   $1 ");

//Output
document.getElementById( "B ").value   =   X;
document.getElementById( "B ").focus();
document.getElementById( "B ").select();
document.getElementById( "OUTPUT ").innerHTML=X.replace(/[\r\n]/gim, " <br> ");
}

function   CopyCodes()
{//
document.getElementById( "B ").select();
js=document.getElementById( "B ").createTextRange();
js.execCommand( "Copy ");
}


</SCRIPT>
<TITLE> Javascript   Tidy </TITLE>
<STYLE>
<!--
*                         {   font-size:   10pt;   }
H1                       {   font-size:   16pt;   font-weight:   bold   }
-->
</STYLE>
</HEAD>

<BODY>
<H1> Javascript   Tidy </H1>
<TEXTAREA   ID= "A "   NAME= "A "   STYLE= "width:   100%;   height:   38% "   ONFOCUS= "if(   this.value   ==   this.defaultValue   )   {   this.value   =   ' ';   } "   ONDBLCLICK= "this.focus();this.select(); "> Your   code   here! </TEXTAREA>
<BUTTON   ONCLICK= "tidy() "> Tidy   my   Javascript </BUTTON>
<BUTTON   ONCLICK= "CopyCodes( 'B ') "> Copy </BUTTON>
<TEXTAREA   ID= "B "   NAME= "B "   STYLE= "width:   100%;   height:   38% "   ONDBLCLICK= "this.focus();this.select(); "> </TEXTAREA>
<INPUT   TYPE= "hidden "   ID= "store ">
<P   ALIGN= "right "> From   <A   HREF= "http://rick.measham.id.au/paste/jstidy.htm "> rick.measham.id.au </A> <BR>
Modified   by   <A   HREF= "mailto:shortway@sina.com "> Shortway </A> </P>
<SPAN   ID= "OUTPUT "> </SPAN>

</BODY>

</HTML>


[解决办法]
alert(unescape( "\u4F60 "))
[解决办法]
我用的ie,帮顶.
[解决办法]
不太清楚你编码(?)的原因,但是

可以采用自己的编码,如:
把非asc码用encodeURI转换,也可以自己编码转换

到最后再转回来。

热点排行