昨天写Windows应用程序用的前端HTML页面时,发现了一个奇怪的问题,一段简单的JS代码,竟然执行错误。
function replaceSymbol(){ var val_exp = $('#calc_expression').val(); alert(val_exp); val_exp=val_exp.replace(/(/g,'(').replace(/)/g,')').replace(/×/g,'*').replace(/÷/g,'/'); alert(val_exp); $('#calc_expression').val(val_exp); }
代码比较简单,也就是替换表达式中的特殊字符,如: ( ) × ÷ 转换为英文状态的符号,如: ( ) * /
但即使包含上面的特殊字符,两次 alert 得到的结果均未变化。但同一个js文件中别的函数执行正常。
试着把这段代码提出来到一个单独的HTML页面,也执行正常。
很明显不是这段代码的问题。
后来想起来js文件是通过新建的txt文件修改扩展名而来的,默认的是ANSI编码。试着在 notepad++ 点击菜单栏的 格式 - 转为 UTF-8 编码格式,保存。
再次执行,OK了。
就是这个不起眼的编码格式的问题,被折腾了N久。
后来跟一个由VC++转做JS的朋友聊起这事儿,告知我:html、js和数据库等文件,一定要设置成 UTF-8 格式的,不然以后有你头疼的时候!
各种语言和工具,桌面开发和移动开发,真是各有各的坑,栽过了才知道哦。
记在这里,以示提醒!
Html和JS文件未使用UTF-8编码导致部分JS函数执行不正确,布布扣,bubuko.com
时间: 2024-10-01 08:05:53