Html和JS文件未使用UTF-8编码导致部分JS函数执行不正确

昨天写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

Html和JS文件未使用UTF-8编码导致部分JS函数执行不正确的相关文章

利用Java注解将常量类生成js文件供前端调用

注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事.标记可以加在包,类,字段,方法,方法的参数以及局部变量上. 1)定义一个最简单的注解 public @interface MyAnnotation {     //...... } 2)把注解加在某个类上: @MyAnnotation public class AnnotationTes

kettle转换JavaScript加载外部js文件

日常开发中,时常会出现这样一种情况.有大量的函数是通用的.而每个JavaScript里面写一遍,给维护带来很大的困扰.因而需要将公共的函数写在外部js文件中.这时就需要引入外部的公共文件了.下面是在转换里的JavaScript组件中引入外部公共js文件. //加载js文件 LoadScriptFile(getVariable("Internal.Transformation.Filename.Directory", "") +"/common_Functi

异步加载js文件的方法总结

方法一,jQuery.getScript HTML 代码: 代码如下 复制代码 <button id="go">Run</button><div class="block"></div> jQuery 代码: jQuery.getScript("http://dev.jquery.com/view/trunk/plugins/color/jquery.color.js", function(){ $

css,js文件后面加一个版本号

由于前几天,更新了项目,更新的文件有js文件,今天客人截图过来,我发现修改之后的效果没有显示出来,我回复说清理浏览器缓存.到了晚上,客人找老板,说还没有处理到這个,说客人不懂這个.所以想到之前自己为了避免浏览器缓存js,css文件,在js,css后面加一个版本号,时间随机.這次笔者是在js后面加了一个版本号参数,应该可以强制到客人的浏览器浏览這个画面时,重新下载修改之后的js文件.如: <script type="text/javascript" src="js/tes

Node.js在执行js文件时总是出错 SyntaxError: Unexpected identifier

直接把hello.js文件拖进去试试 追问 直接将hello.js文件拖进node.js的窗口后,会在窗口中显示出hello.js文件的路径,回车以后什么都没有发生. 追答 直接打开cmd名利提示符面板输入node.exe 敲个空格,记得别按回车键,然后吧hello.js文件拖上去,然后在回去执行就ok了

nodejs如何加载一个文件夹中的js文件

一般情况下,使用nodejs加载一个模块是这样,require("js文件路径"),其中路径可以省略掉js后缀 如果要加载一个文件夹下的所有模块,可以这样使用 var ccc=require("./c"); 其中c文件夹下有a和b,index三个js,默认会加载index.js,此时只需要在index.js中定义好module,则就可以直接调用a或者b文件中的方法,具体代码如下 测试文件multifileTest.js var ccc=require(".

如何某个js文件中的 console

因为自己引用了别人的一个 js 文件,但里面有很多事件相关的 console 输出.自己并不想去修改别人的文件.但想屏蔽掉里面的 console . 有多个 js 文件里有 console.log . 如何在不使用注释的情况下,屏蔽某个 js 文件中的 console 输出?而其他 js 文件中的正常输出? console.log=function(){} 是全部屏蔽.

js如何判断引入的js文件是否加载完毕

js如何判断引入的js文件是否加载完毕:如果javascript代码较少的话完全可以将js代码通过<script></script>标签写在当前页面,但是如果js代码非常庞大的话,那么页面将会变得非常的臃肿,并且由于js代码是同步加载,所以当js代码加载的时候,会阻塞下面内容的解析,所以最好能够动态加载js功能,尤其是能够实现根据需要动态引入外部js文件.由于动态加载js文件是异步的,所以有时候需要判断js文件是否加载完毕,下面就通过代码介绍一下如何实现判断功能.代码如下: fun

通过本地加载ga.js文件提高Google Anlytics性能

Google Anlytics 分析代码是异步加载的,一般来讲不会影响网页性能,但是技术部的网页性能报告里老是提到ga.js的状态为Aborted,说明ga虽然是异步跟踪,但某些情况下对网页性能与加载时间确实存在影响 Google分析代码到底会不会影响网页性能?本地托管ga.js是否可行?本文提供本地服务器托管ga.js的基本思路与实现方法. Google Anlytics 分析代码是异步加载的,一般来讲不会影响网页性能,但是技术部的网页性能报告里老是提到ga.js的状态为Aborted.出现请