非也!charCodeAt返回的一个字符的unicode编码(十进制表示的)。
在JavaScript中其实都是采用16位的unicode编码来存储字符的。
以下都采用十六进制表示:
ascii的编码范围:00~7F
unicode编码范围:0000~FFFF
一个JavaScript字符不一定是ascii字符,字符值在00~7F之间才能获得ascii编码。
ascii编码可以采用十进制表示,也可以十六进制表示。
charCodeAt返回的十进制表示的unicode值。如果它的值在ascii范围内,则它返回的值就是ascii码。
下面有个示例,找出一个字符串中的ascii码:
var str = "12312^731dsfaffad@#@!!!@#$";
var min = '\u0000';
var max = '\u007f';
var t, t2, r = [];
var pad = [];
for(var i = 0; i < strlength; i++) {
pad = [];
t2 = t = strcharCodeAt(i)toString(16);
for(var j = 0; j < 4 - tlength; j++) {padpush(0);}
t = "\\u"+ padjoin("") + ""+ t +"";
if(strcharAt(i) >= min && strcharAt(i) <= max) {
rpush([strcharAt(i), t2]);
}
}
var item;
for(var i = 0; i< rlength; i++) {
item = r[i];
alert("字符:" + item[0] + ";ASCII码:" + item[1]);
}
个人想法,觉得不对,可以拍砖!
UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即0xEF, 0xBB, 0xBF,有的没有。Windows下的txt文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。在判断这类文档时,可以根据文档的前3个字节来进行判断。然而BOM不是必需的,而且也不是推荐的。对不希望UTF-8文档带有BOM的程序会带来兼容性问题,例如Java编译器在编译带有BOM的UTF-8源文件时就会出错。而且BOM去掉了UTF-8一个期望的特性,即是在文本全部是ASCII字符时UTF-8是和ASCII一致的,即UTF-8向下兼容ASCII。
在具体判断时,如果文档不带有BOM,就无法根据BOM做出判断,而且IsTextUnicode API也无法对UTF-8编码的Unicode字符串做出判断。那在编程判断时就要根据UTF-8字符编码的规律进行判断了。
UTF-8是一种多字节编码的字符集,表示一个Unicode字符时,它可以是1个至多个字节,在表示上有规律:
1字节:0xxxxxxx
2字节:110xxxxx 10xxxxxx
3字节:1110xxxx 10xxxxxx 10xxxxxx
4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
这样就可以根据上面的特征对字符串进行遍历来判断一个字符串是不是UTF-8编码了。
举例代码:
javaioFile f=new javaioFile("待判定的文本文件名");
try{
javaioInputStream ios=new javaioFileInputStream(f);
byte[] b=new byte[3];
iosread(b);
iosclose();
if(b[0]==-17&&b[1]==-69&&b[2]==-65)
Systemoutprintln(fgetName()+"编码为UTF-8");
else Systemoutprintln(fgetName()+"可能是GBK");
}catch(Exception e){
eprintStackTrace();
}
以上就是关于js怎样获取字符ASCII码全部的内容,包括:js怎样获取字符ASCII码、java判断文件编码格式 怎么判断编码格式、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)