判断前台输入项的长度应该都会碰到String.length()  判断出来没有超出最大长度,存到数据库就超出长度的问题,oracle字符集是gbk的不太清楚,如果是UTF-8,中文是占三个字符的,所以要对中文进行特别判断。

代码如下:

    public static int lengthOfUTF8(String value) {
int valueLength = 0;
if(value==null)
{
return valueLength;
}
String chinese = "[\u0391-\uFFE5]";
/* 获取字段值的长度,如果含中文字符,则每个中文字符长度为3,否则为1 */
for (int i = 0; i < value.length(); i++) {
/* 获取一个字符 */
String temp = value.substring(i, i + 1);
/* 判断是否为中文字符 */
if (temp.matches(chinese)) {
/* 中文字符长度为3 */
valueLength += 3;
} else {
/* 其他字符长度为1 */
valueLength += 1;
}
}
return valueLength;
} public static void main(String[] args)
{
String str="abc中文d二"; System.out.println("常规length:"+str.length());
System.out.println("占用数据库空间:"+StringUtil.lengthOfUTF8(str));
}

另外,在做测试的时候意外发现,如果在一个数据类型为 varchar2(4000)的字段里插入4000个中文字(for  update),会被截断,并且使用 length() 获取长度时,获得的结果 是1333,和我以前想的不一样,所以在sql中使用length() 判断是否还可以存储更多字符也是不准确的,可能有其他函数吧,以后再查。

最新文章

  1. ffmpeg 常用命令
  2. Vue.js实现checkbox的全选和反选
  3. Windows下使用Xshell建立反向隧道
  4. SourceInsight阅读Python---张子芳
  5. 关于IE9-解决background-size的问题
  6. 右值引用、move与move constructor
  7. BestCoder17 1001.Chessboard(hdu 5100) 解题报告
  8. 不能继承OrmLiteBaseActivity时,这样获取getHelper
  9. UIButton 详解
  10. Microsoft Visual C++ Runtime error解决方法
  11. javascript三种创建对象的方式
  12. Java ZIP File Example---refernce
  13. 机房收费系统中的Grid++Report报表设计器的应用
  14. Unity 图片分割将spirte保存在本地
  15. SQL Server 2008新特性——更改跟踪
  16. JQuery操作option的添加、删除、取值
  17. ASCII,Unicode,GBK和UTF-8字符编码的区别和联系
  18. spring 之 类型转换
  19. Java中的List
  20. java与C++之间进行SOCKET通讯要点简要解析

热门文章

  1. js 阻止冒泡事件和默认事件
  2. enote笔记语言(3)
  3. Luogu P1041 [2003NOIP提高组]传染病控制
  4. Git ——Tool
  5. render: h =&gt; h(App) $mount 什么意思
  6. BZOJ 1641 USACO 2007 Nov. Cow Hurdles 奶牛跨栏
  7. padding填充与box-sizing: border-box配合使用
  8. hdu 4888 最大流给出行列和求矩阵
  9. 基于CNONIX国家标准的出版社ERP系统建设分享
  10. ZooKeeper教程资源收集(简介/原理/示例/解决方案)