`
nooalou
  • 浏览: 66947 次
  • 性别: 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中,处理中英文混合的字符串长度是一个常见的需求,特别是在网页表单验证或文本处理时。由于中文字符和英文字符在计算机内部表示的方式不同,一个英文字符通常占用1个字节,而一个中文字符则占用2个字节...

    如何求中英文混杂字符串的字节长度.pdf

    本文讨论的是如何求中英文混杂字符串的字节长度的问题,并提供了一种使用Javascript语言求中英文混杂字符串字节长度的方法。 字节长度是指字符串占用的字节数量,它是计算机系统中最基本的存储单位。对于中英文混杂...

    js中英文混合的字符串换行

    本文将详细介绍如何使用 JavaScript 对包含中英文字符的字符串进行智能换行处理。 #### 一、需求分析 根据题目描述,我们需要实现一个功能:对包含中文、英文及特殊符号的字符串进行处理,使得当字符串过长时能够...

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

    在JavaScript编程中,字符长度统计是一个基础而重要的功能,尤其是在处理包含多种语言字符的字符串时。为了准确统计字符串中英文和中文字符的长度,我们必须采取不同的策略,因为通常情况下,一个英文字符占用一个...

    js判断字符长度以及中英文数字等

    在JavaScript中,我们可以利用字符串对象内置的`charCodeAt()`方法来获取指定位置字符的Unicode编码。对于UTF-8编码的中文字符,它们的Unicode编码范围通常大于128。基于这一特点,我们可以编写一个判断字符串长度的...

    限制 输入框字符长度 适用于中英文

    在网页开发中,限制用户在输入框(Input)中输入的字符长度是一项常见的需求,尤其在数据验证或者信息填写时。本示例中,我们探讨了两种JavaScript方法来实现这一功能,分别针对英文、数字以及中文字符。 1. **...

    javaScript判定提交内容是否超过数据库长度

    在这个函数中,正则表达式`/[^\x00-\xff]/g`用于匹配所有非ASCII字符(即那些可能包含中文字符的字节),并将它们替换为两个星号(**),这样每个原本占用多个字节的字符在被替换后都会被计为两个字符长度。...

    js java 判断中文,英文的混合长度

    在JavaScript中,可以通过遍历字符串中的每个字符并检查其Unicode编码值来实现对字符串长度的计算。具体来说,可以利用`charCodeAt()`方法获取字符的Unicode编码值,从而判断该字符是否为中文字符。如果字符的...

    js判断字符长度及中英文数字等

    关于JavaScript判断字符长度及中英文数字等内容的知识点,主要围绕在编写代码时如何根据不同的字符集计算字符串的长度。由于不同字符占用的字节空间不同,传统的字符串长度判断方式并不适合于国际化需求,特别是在...

    JavaScript截取中文字符串

    假设有一个包含中英文混合的字符串`"Hello, 你好!"`,现在希望截取前5个字符(其中中文字符按两个字符计): ```javascript var str = "Hello, 你好!"; var result = subString(str, 5, true); console.log(result)...

    js截取固定长度的中英文字符的简单实例

    为了解决这个问题,我们需要自定义一个函数来准确地截取固定长度的字符串,同时考虑中英文字符。 标题提到的"js截取固定长度的中英文字符的简单实例",实际上就是提供了一个这样的解决方案。这个实例中的函数`...

    js控制输入中英文字符数

    在JavaScript编程中,控制输入中英文字符数是一项常见的需求,特别是在网页表单或者文本输入框中。这样的功能有助于保持用户输入的数据格式规范,防止输入过长的文本导致数据处理问题。下面我们将详细讨论如何实现这...

    判断字符串的长度(优化版)中文占两个字符

    例如,在JavaScript中,英文字符和一些标点符号默认占用1个字符长度,而中文字符则通常占用2个字符长度。因此,在计算字符串长度时,需要考虑到这种编码差异。 为了在JavaScript中计算一个字符串的长度,并且确保...

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

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

    javascript截取字符串(通过substring实现并支持中英文混合)

    总结来说,在JavaScript中截取包含中英文混合的字符串,通常需要考虑字符编码的长度差异。使用 substring() 和 substr() 方法时,可能需要结合正则表达式来正确处理字符边界问题。本文提供的代码和方法可以帮助...

    JS版获取字符串真实长度和取固定长度的字符串函数

    综上所述,通过理解和实现JavaScript中关于处理字符串长度的函数,可以有效地解决在Web开发中遇到的文本处理问题。正确地处理单字节和双字节字符,不仅可以提升程序的健壮性,还可以为用户提供更好的阅读体验。

Global site tag (gtag.js) - Google Analytics