免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2366 | 回复: 6
打印 上一主题 下一主题

发一个关于js 的问题。 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-21 16:01 |只看该作者 |倒序浏览
如何判断一个 string 的长度 ...

使用 strlen 返回的长度对于 E 文来说没有问题,但没有办法判断中文 。。。

论坛徽章:
0
2 [报告]
发表于 2009-12-22 12:15 |只看该作者
你指什么长度?字节数?字符数?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2009-12-22 16:55 |只看该作者
原帖由 lovetide 于 2009-12-22 12:15 发表
你指什么长度?字节数?字符数?


比如 strlen('aaaa') 返回 4 .

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2009-12-22 16:55 |只看该作者
但是 strlen('甲乙丙丁') 也返回 4 ,这就有问题了.

论坛徽章:
0
5 [报告]
发表于 2009-12-22 20:50 |只看该作者
js 是 javascript 吗?
javascript 有strlen() 吗?怎么感觉像是C  !
如果这里讨论的是JavaScript, 字串的的长度取决于使用的字符集
比较一下下面的代码

  1. <head>
  2. <meta http-equiv="Content-Language" content="zh-cn">
  3. <meta http-equiv="Content-Type" content="text/html; charset=ascii">
  4. <script type="text/javascript">
  5.         alert('aaaa'.length);
  6.         alert('甲乙丙丁'.length);        
  7. </script>
  8. </head>
  9. <body>
  10. ...........
  11. </body>
复制代码


  1. <head>
  2. <meta http-equiv="Content-Language" content="zh-cn">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. <script type="text/javascript">
  5.         alert('aaaa'.length);
  6.         alert('甲乙丙丁'.length);        
  7. </script>
  8. </head>
  9. <body>
  10. ...........
  11. </body>
复制代码


  1. <head>
  2. <meta http-equiv="Content-Language" content="zh-cn">
  3. <meta http-equiv="Content-Type" content="text/html; charset=gbk">
  4. <script type="text/javascript">
  5.         alert('aaaa'.length);
  6.         alert('甲乙丙丁'.length);        
  7. </script>
  8. </head>
  9. <body>
  10. ...........
  11. </body>
复制代码

论坛徽章:
26
卯兔
日期:2014-12-02 13:53:28射手座
日期:2015-03-22 23:40:50午马
日期:2015-03-22 23:41:25寅虎
日期:2015-03-22 23:41:41亥猪
日期:2015-03-22 23:42:22戌狗
日期:2015-03-22 23:42:51酉鸡
日期:2015-03-22 23:43:29申猴
日期:2015-03-22 23:43:51未羊
日期:2015-03-22 23:44:15子鼠
日期:2015-03-22 23:45:11丑牛
日期:2015-03-22 23:45:32辰龙
日期:2015-03-22 23:45:53
6 [报告]
发表于 2009-12-23 08:59 |只看该作者
谢谢,受教了

论坛徽章:
0
7 [报告]
发表于 2009-12-23 18:47 |只看该作者
你如果想要得到字符串的字节数,最好别在 JavaScript 里面去计算。除了像 5 楼所说的会受到页面编码的影响外,我隐约记得 JavaScript 内部统一以 Unicode 编码来处理字符串的。

如果你确定用户只输入普通的汉字,并且页面采用 GBK 编码,那就根据每个汉字占两个字节来计算字节数吧。但如果是 UTF-8 这类字节数不定长的编码就不能这么计算了。


  1. <head>
  2. <meta http-equiv="Content-Language" content="zh-cn">
  3. <meta http-equiv="Content-Type" content="text/html; charset=gbk">
  4. </head>
  5. <body>
  6. 假定本页面的 ContentType 是 text/html; charset=gbk, 并且是以 GBK 编码保存到文件里的……<br/>
  7. <input type='text' id='oText' value='中文'/><button onClick='CalcByteLen()'>计算字节数</button>
  8. <script type="text/javascript">
  9. function CalcByteLen ()
  10. {
  11.         var sText=oText.value;
  12.         var iByteLen=0;
  13.         var iStrlen=sText.length;
  14.         var i=0;
  15.         for (i=0; i<iStrlen ;i++ )
  16.         {
  17.           if(sText.charCodeAt(i) >= 256)        // Unicode 与 GBK 一样都是两字节编码
  18.           {
  19.                 iByteLen += 2;
  20.           }
  21.           else
  22.           {
  23.                 iByteLen ++;
  24.           }
  25.         }
  26.         alert (sText + " 的以 GBK 编码的字节长度为:" + iByteLen );
  27. }

  28. </script>
  29. </body>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP