var ss="{ path: 'eee\2012-01-10ee'}"
var info=eval("(" + ss + ")");
document.write((info.path));为什么把\201转换成乱码?

解决方案 »

  1.   

    var ss={ path: 'eee\\2012-01-10ee'}
    document.writeln(ss.path);
    var ss="{ path: 'eee\\\\2012-01-10ee'}"
    var info=eval("(" + ss + ")");
    document.writeln(info.path);
      

  2.   

    \  在js字符串拼接的时候是一个保留的转义字符,要表示\本身则要用\\ eval方法拼接了两次,所以要用2*2=4个\
      

  3.   

    var ss="{ path: 'eee\\\\2012-01-10ee'}" 一共4个\, 第1,3个\起到转义的作用,实际结果表示这里有两个\\.
    eval中看到两个\\,第一个\起转义作用,结果是这里有一个\.你的代码:var ss="{ path: 'eee\2012-01-10ee'}"     这里\201 的作用“\后面跟3个数字表示这3个数字是8进制”,八进制201对应的10进制是129,把129换成对应的ascii码,就是打印的东西。
    你换成\101试试,八进制101对应10进制65,就会打印一个“A”