`
guyongpeng
  • 浏览: 61815 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

从用户友好性看中文长度的校验

阅读更多
字符的长度校验是程序中必不可少的。

如一个业务需求是名称不能大于10个字,在数据库设计时该字段设为最大长度10。

计算机在用gbk编码存储中文字符时需要2个字节,而ascii字符需要1个字节。

不幸的是,不管JavaScript还是Java在求字符长度的方法对中英文是一视同仁的,即"中".length()和"e".length()的返回值都是1,象Struts这样的验证拦截器也是这样。这样好了,用户输入6个中文字符,傻了,数据库插入数据失败:违反最大长度约束。

最快的解决办法是将可以输入中文的字段的最大长度放大到2倍。

用户满意了,但有些人会狗尾续貂,想现在名称字段明明可以存储20个英文字符,你却硬生生地砍掉一半,不是浪费了数据库潜力嘛。于是乎费老鼻子劲在JavaScript中,在Java中将中文字符算做2个,用了长度验证拦截器的还得专门写个中文长度校验的拦截器配置到应用中,貌是很好很强大,然后在长度提示中出现如下字符:名称长度不能超过20(一个中文算2个字符)

程序员爽了,可从用户角度可不管你是中文,英文还是标点,肉眼看到的统统计为一个字符,这样做的结果只能使用户无谓的困惑。

我们写的程序是给用户用的,不只是自己用来欣赏的,这是很多程序员需要克服的一个思维习惯。

PS:SQL Server中的nvarchar类型对多字节字符和单字节字符一视同仁,比较方便。
分享到:
评论
2 楼 spiritfrog 2008-07-11  
guyongpeng 写道
字符的长度校验是程序中必不可少的。

如一个业务需求是名称不能大于10个字,在数据库设计时该字段设为最大长度10。

计算机在用gbk编码存储中文字符时需要2个字节,而ascii字符需要1个字节。

不幸的是,不管JavaScript还是Java在求字符长度的方法对中英文是一视同仁的,即"中".length()和"e".length()的返回值都是1,象Struts这样的验证拦截器也是这样。这样好了,用户输入6个中文字符,傻了,数据库插入数据失败:违反最大长度约束。

最快的解决办法是将可以输入中文的字段的最大长度放大到2倍。

用户满意了,但有些人会狗尾续貂,想现在名称字段明明可以存储20个英文字符,你却硬生生地砍掉一半,不是浪费了数据库潜力嘛。于是乎费老鼻子劲在JavaScript中,在Java中将中文字符算做2个,用了长度验证拦截器的还得专门写个中文长度校验的拦截器配置到应用中,貌是很好很强大,然后在长度提示中出现如下字符:名称长度不能超过20(一个中文算2个字符)

程序员爽了,可从用户角度可不管你是中文,英文还是标点,肉眼看到的统统计为一个字符,这样做的结果只能使用户无谓的困惑。

我们写的程序是给用户用的,不只是自己用来欣赏的,这是很多程序员需要克服的一个思维习惯。

PS:SQL Server中的nvarchar类型对多字节字符和单字节字符一视同仁,比较方便。

数据库多用些空间算什么?用户感知很重要。一个英文跟一个中文没有区别
1 楼 zhyun29 2008-07-10  
通常一个汉字表达的意思要比一个字母多,所以通常来说不会有什么问题

相关推荐

    Struts2 用户输入校验教程

    Struts2是一个流行的Java web开发框架,它遵循MVC(Model-View-Controller)模式,帮助开发者构建可维护、可扩展的应用...在编写验证代码时,应注重错误信息的友好性和安全性,以提供良好的用户体验并保障系统安全。

    Struts 2 数据校验功能及校验问题的解决方案

    Struts 2 是一个流行的Java Web框架,用于构建企业级应用程序。...在处理校验问题时,除了正确实现校验逻辑外,还要注意错误信息的反馈和用户界面的友好性,提供清晰的错误提示,帮助用户快速修复输入错误。

    校验和计算工具,用于CRC校验

    4. **用户友好性**:工具的易用性对于用户来说至关重要,"直接复制到上面就可以用"显示了设计者考虑到了用户体验,使得计算过程简单快捷。 5. **数据错误检测**:CRC校验通过对比发送和接收的校验码来判断数据是否...

    CRC校验小工具

    7. 用户友好的界面:为了方便用户使用,这类工具通常会设计成图形用户界面(GUI),提供简单的拖放操作或者文件路径输入框,使用户能够轻松进行CRC校验。 总之,CRC校验小工具是数据完整性的重要保障,尤其在通信、...

    校验和计算工具

    这种工具通常具有用户友好的界面,使得输入数据和获取校验和的过程变得简单高效。 描述中提到的“输入方便,使用快捷”,意味着该工具可能设计有直观的界面和快速的计算功能。用户可能只需要将需要校验的数据复制...

    页面输入校验

    在IT行业中,页面输入校验是一项至关重要的技术实践,它涉及到用户在网页上提交数据时的数据有效性检查。页面输入校验的主要目标是确保用户输入的数据符合预设的规则,从而防止错误的数据进入系统,提高数据的准确性...

    校验和计算工具CheckTool

    在实际应用中,例如当我们从互联网上下载大型软件安装包时,可以通过CheckTool计算下载后的文件校验和,然后与官方网站提供的校验和进行比较,以确认文件的完整性,避免因网络问题导致的下载错误。 压缩包中的`...

    IntelHEX校验和计算工具

    - 用户友好的界面:提供清晰的指示和反馈,使得即使没有深入了解IntelHEX格式的用户也能轻松使用。 - 输出报告:生成校验和检查报告,详细列出所有有效的和无效的记录,便于分析和问题定位。 通过使用"IntelHEX校验...

    CRC16校验码计算器

    它通常具有用户友好的界面,允许用户输入要校验的数据,然后软件会自动计算出对应的CRC16值。这个绿色版意味着软件无需安装,直接运行即可,方便用户随身携带和使用。 CRC16算法的核心在于选择一个特定的16位校验...

    CRC16校验计算工具

    CRC,全称为Cyclic Redundancy Check(循环冗余校验),通过附加一个固定长度的校验码来确保数据的完整性。CRC16则是其中的一种,它生成的是一个16位的校验码。 CRC的基本原理是基于多项式除法。在CRC校验中,数据...

    CheckSum 校验和工具

    CheckSum校验和工具就是一款针对这一需求设计的实用软件,它小巧高效,能够帮助用户快速验证文件的完整性,确保数据的一致性。本文将深入探讨CheckSum工具的原理、功能以及其在实际工作中的应用。 一、理解CheckSum...

    CRC校验码(C#).rar

    这表明该工具具有一定的用户友好性,能够处理带有分隔符的数据输入。 标签"CRC16校验"和"校验计算"进一步明确了这个程序的功能,它专注于16位的CRC校验计算。CRC16是一种常见的CRC校验版本,适用于各种应用,如串口...

    各种输入框动态校验框架

    从压缩包文件名"校验框架v1.0"我们可以推测,这可能是一个初步版本的校验框架,提供了基本的功能和稳定性,但可能随着后续的版本更新会增加更多的特性和优化。 综上所述,"各种输入框动态校验框架"涉及的知识点包括...

    MD5值校验工具 3.0

    综上所述,MD5值校验工具 3.0 是一款高效、实用的文件完整性检查工具,对于个人用户和企业来说,都是确保数据安全的重要辅助手段。通过使用该工具,用户可以确保他们接收到的文件与原始版本完全一致,避免因文件损坏...

    页面的数据校验JS和HTML

    从给定的文件信息来看,我们正在探讨的主题是“页面的数据校验JS和HTML”,这是一个在Web开发中非常重要的主题,特别是在确保用户输入数据的有效性和安全性方面。下面将详细解析这个主题的关键知识点。 ### 页面...

    32位MD5密码校验

    这种转化过程是单向的,即从数据生成MD5值相对容易,但若想从MD5值反推原始数据则几乎不可能,这就是MD5的主要特性,常用于数据的完整性校验和密码存储。 32位MD5密码校验是指通过计算数据的MD5摘要,然后与预知的...

    Labview CRC校验.zip

    CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据通信和存储中的错误...通过学习和理解这些VI的内部工作原理,开发者可以更好地掌握CRC校验技术,并将其应用到实际项目中,提高数据的可靠性和完整性。

    服务器端代码本地校验软件服务器端代码本地校验软件

    这对于提高网页质量、确保浏览器兼容性和提高搜索引擎友好性等方面都具有重要意义。 ### 二、软件特性 1. **支持多种操作系统**:ARealValidator 支持包括 Microsoft Windows 95/98/Me/NT4/2000/XP 在内的多种操作...

    Hash_1.0.4_MD5校验工具

    "Hash_1.0.4_MD5校验工具"的特点在于它的用户友好性。支持文件拖曳功能意味着用户可以直接将需要校验的文件从文件管理器拖放到程序界面,而无需经过复杂的操作步骤。这对于处理大量文件或者不熟悉计算机操作的用户来...

Global site tag (gtag.js) - Google Analytics