`
nooalou
  • 浏览: 66483 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

在javascript中获取中英文字符长度的问题

    博客分类:
  • java
阅读更多
最近搬家到javaeye了,将以前的日志也搬来几个:

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
分享到:
评论
7 楼 liucl_tiger 2008-12-25  
这是JS中的,请问有没有在java中的呢?
6 楼 longrm 2008-12-25  
skydream 写道
有时候我们需要5?

你是指要得到的字节长度吧?请注意字节和字符的差异。而字节长度是和编码有关系的,比如"中国a",gbk/gb2312编码是5个字节,可是如果是utf-8,则是7个字节(utf-8下通常一个汉字3个字节)。

楼主似乎对字节长度的概念还不是很清楚,虽然一般情况下汉字字符大都使用gbk。但是不能把汉字和2个字节直接划上等号。

假设后台数据库是采用utf-8保存数据,表结构中某个字段的长度是30个字节,那么用楼主你的这个函数,长度计算就出问题了。


这个问题该怎么解决?
5 楼 samm 2008-12-24  
chsenr 写道
skydream 写道
楼主太激动了,我并没有评价你的能力,只是善意的指出一个汉字==长度2这个观点的由来和可能存在的问题而已。

在我开发的项目中,的确存在后台数据库采用utf-8,造成前台js在检测字符串长度是否超过数据库容许时需要将汉字长度计算为3的情况。


呵呵,其实你从数据库来考虑是有一定道理的。但是这段代码的作用甚至有可能跟数据库完全没有关系。比如,用户呢称,从显示角度 ,如果要简单的限制一下总体长度,可以这样做,因为一个英文字符的宽度大概是半个汉字的宽度。


呵呵,为什么限制长度呢,就是因为数据的长度设置好了
4 楼 chsenr 2008-12-16  
skydream 写道
楼主太激动了,我并没有评价你的能力,只是善意的指出一个汉字==长度2这个观点的由来和可能存在的问题而已。

在我开发的项目中,的确存在后台数据库采用utf-8,造成前台js在检测字符串长度是否超过数据库容许时需要将汉字长度计算为3的情况。


呵呵,其实你从数据库来考虑是有一定道理的。但是这段代码的作用甚至有可能跟数据库完全没有关系。比如,用户呢称,从显示角度 ,如果要简单的限制一下总体长度,可以这样做,因为一个英文字符的宽度大概是半个汉字的宽度。
3 楼 skydream 2008-01-13  
楼主太激动了,我并没有评价你的能力,只是善意的指出一个汉字==长度2这个观点的由来和可能存在的问题而已。

在我开发的项目中,的确存在后台数据库采用utf-8,造成前台js在检测字符串长度是否超过数据库容许时需要将汉字长度计算为3的情况。
2 楼 nooalou 2008-01-13  
skydream 写道
有时候我们需要5?

你是指要得到的字节长度吧?请注意字节和字符的差异。而字节长度是和编码有关系的,比如"中国a",gbk/gb2312编码是5个字节,可是如果是utf-8,则是7个字节(utf-8下通常一个汉字3个字节)。

楼主似乎对字节长度的概念还不是很清楚,虽然一般情况下汉字字符大都使用gbk。但是不能把汉字和2个字节直接划上等号。

假设后台数据库是采用utf-8保存数据,表结构中某个字段的长度是30个字节,那么用楼主你的这个函数,长度计算就出问题了。


对于技术,谁也不能说一定比谁强,我建议只要就问题讨论就好,不要评价别人的能力,这样就显得狭隘了。

你所说的是一方面,我所说的是另一方面,发帖子就是希望当朋友们遇到了我所说的情况下,可以有个可以参考和借鉴的例子就好。大家就是你帮我我帮你嘛。

如果我们系统的数据库真如你所说的情况,想必大家用一下就会知道结果对不对了,没必要非给出个一定对或一定不对的结论,难道代码中还要加上更多判断不成,合适就好。
Take it easy!
1 楼 skydream 2008-01-13  
有时候我们需要5?

你是指要得到的字节长度吧?请注意字节和字符的差异。而字节长度是和编码有关系的,比如"中国a",gbk/gb2312编码是5个字节,可是如果是utf-8,则是7个字节(utf-8下通常一个汉字3个字节)。

楼主似乎对字节长度的概念还不是很清楚,虽然一般情况下汉字字符大都使用gbk。但是不能把汉字和2个字节直接划上等号。

假设后台数据库是采用utf-8保存数据,表结构中某个字段的长度是30个字节,那么用楼主你的这个函数,长度计算就出问题了。

相关推荐

    在javascript中如何得到中英文混合字符串的长度

    有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度。 用的是正则表达式。 代码如下: var str = ”坦克是tank的音译”; var len = str.match(/[^ -~]/g) == null ? str.length : str....

    JavaScript获取中英文混合字符串长度的方法示例

    主要介绍了JavaScript获取中英文混合字符串长度的方法,结合实例形式分析了javascript通过遍历转换字符串实现统计字符串长度的操作技巧,需要的朋友可以参考下

    JavaScript中英文字符长度统计方法示例【按照中文占2个字符】

    主要介绍了JavaScript中英文字符长度统计方法,涉及javascript针对中英文字符的匹配与运算相关操作技巧,需要的朋友可以参考下

    javascript 判断中文字符长度的函数代码

    JS的字符串都是string对象,可以用string对象的length属性可以获取其长度,但是无论是中文、全角符号以及英文最小长度单位都是1,这与php的strlen()并不相同。 代码如下: function strlen(str) { var s = 0; for(var...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    1、原生JavaScript实现字符串长度截取 2、原生JavaScript获取域名主机 3、原生JavaScript清除空格 4、原生JavaScript替换全部 5、原生JavaScript转义html标签 6、原生JavaScript还原html标签 7、原生JavaScript时间...

    JavaScript实现的GBK、UTF8字符串实际长度计算函数

    大家都知道,在JS中字符串的长度不分中英文字符, 每一个字符都算一个长度,这跟PHP里的strlen()函数就不太一样。PHP里的strlen()函数根据字符集把GBK的中文每个2累加,把UTF-8的中文字符每个按3累加。 有些童鞋可能...

    程序天下:JavaScript实例自学手册

    14.9 获取字符串型数组下标的数组长度 14.10 用JavaScript实现数组排序 14.11 数字千分位函数 14.12 读写Cookie的函数 14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript...

    javascript常用判断

    1:js 字符串长度限制、判断字符长度 、js限制输入、限制不能输入、textarea 长度限制 2.:js判断汉字、判断是否汉字 、只能输入汉字 3:js判断是否输入英文、只能输入英文 4:js只能输入数字,判断数字、验证数字、检测...

    《程序天下:JavaScript实例自学手册》光盘源码

    14.9 获取字符串型数组下标的数组长度 14.10 用JavaScript实现数组排序 14.11 数字千分位函数 14.12 读写Cookie的函数 14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript...

    javascript表单验证大全

    1:js 字符串长度限制、判断字符长度 、js限制输入、限制不能输入、textarea 长度限制 2.:js判断汉字、判断是否汉字 、只能输入汉字 3:js判断是否输入英文、只能输入英文 4:js只能输入数字,判断数字、验证数字、...

    编写可维护的javascript(英文)

    10.2 在JavaScript中抛出错误 10.3 抛出错误的好处 10.4 何时抛出错误 10.5 try-catch语句 10.6 错误类型 第11章 不是你的对象不要动 11.1 什么是你的 11.2 原则 11.2.1 不覆盖方法 11.2.2 不新增方法 ...

    浅谈JavaScript字符串与数组

    在JavaScript中,字符串可以使用双引号(” “)或单引号(’ ‘)来表示。 双引号和单引号必须成对出现,双引号里面可以包含单引号,单引号里面也可以包含双引号。 例如: 代码如下:  var myStr1=” My name is ...

    js验证,javascript

    1:js 字符串长度限制、判断字符长度、js限制输入、限制不能输入、textarea 长度限制 2.:js判断汉字、判断是否汉字 、只能输入汉字 3:js判断是否输入英文、只能输入英文 4:js只能输入数字,判断数字、验证数字、检测...

    javascript中使用正则计算中文长度的例子

    由于javascript是unicode编码的,所有的字符对于它来说一个就是一个,但是后台程序不是,通常在后台程序中一个中文是占两个字节的,这就导致了前后端校验长度不一致,这个问题可以通过正则来解决。 代码如下:function...

    javascript组件:jsvalidation-1_0b4

    4.必须为普通英文字符(字母,数字,下划线) 5.必须为中文字符 6.最小长度 7.最大长度 8.是否为Email格式 9.是否为日期格式(yyyy-mm-dd) 10.自定义的正则表达式 11.整数范围(大于某数小于某数) 12.双精...

    Javascript 字符串字节长度计算函数代码与效率分析(for VS 正则)

    下面的函数都是用于计算字符串长度,英文算一个,中文算两个。效果一样,效率却未必一样,大家可以自行选择下。

    JavaScript对象验证库js-validator.zip

    alpha_dash验证域必须由英文字符、数字、中划线或者下划线组成。alpha_num验证域必须由英文字符或者数字组成。array验证域必须为数组对象。before:date验证的日期域的日期必须在给定日期之前。between:min,max验证域...

Global site tag (gtag.js) - Google Analytics