浏览 11543 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-12
var i="中国a"; 一般情况下,我们用i.length会得到结果3 但有时候我们需要5,下面的小代码可以解决问题 <script> alert (fucCheckLength("中国aaaa")); function fucCheckLength(strTemp) { var i,sum; sum=0; for(i=0;i<strTemp.length;i++) { if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255)) sum=sum+1; else sum=sum+2; } return sum; } </script> 会得到结果是:8 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-13
有时候我们需要5?
你是指要得到的字节长度吧?请注意字节和字符的差异。而字节长度是和编码有关系的,比如"中国a",gbk/gb2312编码是5个字节,可是如果是utf-8,则是7个字节(utf-8下通常一个汉字3个字节)。 楼主似乎对字节长度的概念还不是很清楚,虽然一般情况下汉字字符大都使用gbk。但是不能把汉字和2个字节直接划上等号。 假设后台数据库是采用utf-8保存数据,表结构中某个字段的长度是30个字节,那么用楼主你的这个函数,长度计算就出问题了。 |
|
返回顶楼 | |
发表时间:2008-01-13
skydream 写道 有时候我们需要5? 你是指要得到的字节长度吧?请注意字节和字符的差异。而字节长度是和编码有关系的,比如"中国a",gbk/gb2312编码是5个字节,可是如果是utf-8,则是7个字节(utf-8下通常一个汉字3个字节)。 楼主似乎对字节长度的概念还不是很清楚,虽然一般情况下汉字字符大都使用gbk。但是不能把汉字和2个字节直接划上等号。 假设后台数据库是采用utf-8保存数据,表结构中某个字段的长度是30个字节,那么用楼主你的这个函数,长度计算就出问题了。 对于技术,谁也不能说一定比谁强,我建议只要就问题讨论就好,不要评价别人的能力,这样就显得狭隘了。 你所说的是一方面,我所说的是另一方面,发帖子就是希望当朋友们遇到了我所说的情况下,可以有个可以参考和借鉴的例子就好。大家就是你帮我我帮你嘛。 如果我们系统的数据库真如你所说的情况,想必大家用一下就会知道结果对不对了,没必要非给出个一定对或一定不对的结论,难道代码中还要加上更多判断不成,合适就好。 Take it easy! |
|
返回顶楼 | |
发表时间:2008-01-13
楼主太激动了,我并没有评价你的能力,只是善意的指出一个汉字==长度2这个观点的由来和可能存在的问题而已。
在我开发的项目中,的确存在后台数据库采用utf-8,造成前台js在检测字符串长度是否超过数据库容许时需要将汉字长度计算为3的情况。 |
|
返回顶楼 | |
发表时间:2008-12-16
skydream 写道 楼主太激动了,我并没有评价你的能力,只是善意的指出一个汉字==长度2这个观点的由来和可能存在的问题而已。
在我开发的项目中,的确存在后台数据库采用utf-8,造成前台js在检测字符串长度是否超过数据库容许时需要将汉字长度计算为3的情况。 呵呵,其实你从数据库来考虑是有一定道理的。但是这段代码的作用甚至有可能跟数据库完全没有关系。比如,用户呢称,从显示角度 ,如果要简单的限制一下总体长度,可以这样做,因为一个英文字符的宽度大概是半个汉字的宽度。 |
|
返回顶楼 | |
发表时间:2008-12-24
chsenr 写道 skydream 写道 楼主太激动了,我并没有评价你的能力,只是善意的指出一个汉字==长度2这个观点的由来和可能存在的问题而已。
在我开发的项目中,的确存在后台数据库采用utf-8,造成前台js在检测字符串长度是否超过数据库容许时需要将汉字长度计算为3的情况。 呵呵,其实你从数据库来考虑是有一定道理的。但是这段代码的作用甚至有可能跟数据库完全没有关系。比如,用户呢称,从显示角度 ,如果要简单的限制一下总体长度,可以这样做,因为一个英文字符的宽度大概是半个汉字的宽度。 呵呵,为什么限制长度呢,就是因为数据的长度设置好了 |
|
返回顶楼 | |
发表时间:2008-12-25
skydream 写道 有时候我们需要5?
你是指要得到的字节长度吧?请注意字节和字符的差异。而字节长度是和编码有关系的,比如"中国a",gbk/gb2312编码是5个字节,可是如果是utf-8,则是7个字节(utf-8下通常一个汉字3个字节)。 楼主似乎对字节长度的概念还不是很清楚,虽然一般情况下汉字字符大都使用gbk。但是不能把汉字和2个字节直接划上等号。 假设后台数据库是采用utf-8保存数据,表结构中某个字段的长度是30个字节,那么用楼主你的这个函数,长度计算就出问题了。 这个问题该怎么解决? |
|
返回顶楼 | |
发表时间:2008-12-25
这是JS中的,请问有没有在java中的呢?
|
|
返回顶楼 | |