最近和JavaScript纠缠上了。
遇到这么一个问题,数据库的字符集为UTF-8的,要在页面上使用JavaScript验证输入的文本用UTF-8存储时占用字节长度。JavaScript的String对象有length属性,但是这个计算的是字符数,不是字节数(问题总是翻来覆去的,记得当年玩Delphi的时候,还得写程序计算字符串的字符数,因为Delphi中String的length是字节数...)。偷懒一点的办法是将验证代码中最大长度设置为数据库中对应字段的长度的1/3,但是这样准确来说有点不合适。
所以想办法在JavaScript中判断在UTF-8下存储的String的字节数,在网上找到很多关于Unicode介绍的文档,最重要的是字符编码数值对应的存储长度:
UCS-2编码(16进制) UTF-8 字节流(二进制)
0000 - 007F 0xxxxxxx (1字节)
0080 - 07FF 110xxxxx 10xxxxxx (2字节)
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx (3字节)
于是代码如下:
function mbStringLength(s) {
var totalLength = 0;
var i;
var charCode;
for (i = 0; i < s.length; i++) {
charCode = s.charCodeAt(i);
if (charCode < 0x007f) {
totalLength = totalLength + 1;
} else if ((0x0080 <= charCode) && (charCode <= 0x07ff)) {
totalLength += 2;
} else if ((0x0800 <= charCode) && (charCode <= 0xffff)) {
totalLength += 3;
}
}
//alert(totalLength);
return totalLength;
}
实际上,0x0080到0x07ff之间的字符很少会在实际用户输入中用到。
分享到:
相关推荐
JavaScript的String对象有length属性,但是这个计算的是字符数,不是字节数(问题总是翻来覆去的,记得当年玩Delphi的时候,还得写程序计算字符串的字符数,因为Delphi中String的length是字节数…)。偷懒一点的办法...
JavaScript 中关于字符串字节长度的计算比较(含汉字字符串) 可用于验证字符串长度。效率比较高。
JavaScript语言教程:JavaScript 字符串
本文主要针对Javascript中字符串相关常用的使用方法进行了总结
实验9:Java数组与字符串.doc
本文给大家分享的是使用Javascript 计算字符串在localStorage中所占字节数,分别对UTF-8和UTF-16两种编码进行了详细说明,有需要的小伙伴可以参考下。
JavaScript字符串函数大全 JS自带函数 JavaScript字符串函数大全 JS自带函数
javascript字符串操作,有对其中字符串的各种操作方法
javascript 常用字符串函数
normat: 通用javascript编号/字符串格式化
getByteCount: 取一个字符串所占用的字节数,英文字母占一个字节,非英文则占两个字节 makeBookmark: 把当前网页加入到浏览器的收藏夹中 $.brady.validator: 定义一个常用的javascript表单项验证工具 isEmpty: 测试...
Javascript 后端的字符串像素宽度测量。 支持的字体: Andale Mono Arial Avenir Avenir Next Comic Sans MS Courier New Georgia Helvetica Impact Times New Roman Trebuchet MS Verdana Webdings Open Sans ...
JS自带函数,concat,indexOf,将整个字符串转成小写字母,通过将字符串划分成子串,将一个字符串做成一个字符串数组。
JavaScript中针对字符串/ JSON / JS对象实现的无损LZW压缩/解压缩。 用法: 从npm安装lzwCompress: npm install lzwcompress 然后在您的node.js应用程序中使用它: import lzwCompress from 'lzwcompress'; ...
实例:用 JavaScript 来操作字符串(一些字符串函数)
用 JavaScript 操作字符串.doc
Javascript 字符串字节数获取功能多种方法
多个字符串之间可以使用+进行拼接,其拼接方式为字符串+任何类型=拼接之后的新字符串 拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串 口诀:数值相加,字符相连 谢谢聆听