String储存数据库字段限长Utils
2017-11-27 21:03
267 查看
/** * 将String转化为不超过定长的String, * 注:数据库插表字段长度的判断转化,我们数据库用的charset=UTF-8 * * UTF-8 编码字符理论上可以最多到 6 个字节长, 然而 16 位 BMP 字符最多只用到 3 字节长. * 占2个字节的:带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码 * 占3个字节的:基本等同于GBK,含21000多个汉字 * 占4个字节的:中日韩超大字符集里面的汉字,有5万多个 * 一个utf8数字占1个字节 * 一个utf8英文字母占1个字节 * 调用示例:limitStringLength("12345中国中中中",10,"UTF-8",6); * * 返回最大字段长度为(length + 1 - charsetMaxLength) + charsetMaxLength - 1 * * @author cheng_xy * * @param judgeStr 需要判断限制的String * @param length String不能超过的长度 * @param charset 判断Length的编码格式 * @param charsetMaxLength 编码格式一个字最大存储字节 * @return (length >= (charsetMaxLength - 1)) ? "limitStringLength()逻辑判断处理后的值" : judgeStr; */ public static String limitStringLength(String judgeStr, int length, String charset, int charsetMaxLength){ if(judgeStr == null){ judgeStr = ""; } try{ byte[] bytes = judgeStr.getBytes(charset); int strLength = bytes.length; if(strLength > length /*&& length >= (charsetMaxLength - 1)*/){//超过字段指定最大长度 judgeStr = new String(bytes, 0, length + 1 - charsetMaxLength, charset); /* //测试时放开,观察length System.out.println(judgeStr);//修改长度后返回的String byte[] bytesinfo2 = judgeStr.getBytes(charset); int strLengthinfo2 = bytesinfo2.length; System.out.println(strLengthinfo2);//修改长度后返回的String的长度 */ } }catch(Exception e){ e.printStackTrace(); //length < (charsetMaxLength - 1)情况会报错java.lang.StringIndexOutOfBoundsException: String index out of range: -1 } return judgeStr; }
希望对你有帮助,祝你有一个好心情,加油!若有错误、不全、可优化的点,欢迎纠正与补充!
相关文章推荐
- 将数据库中的image字段(二进制字段)读出并转换为String
- C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度
- 从剪切板中将 Navicat Premium 中的数据库字段转为 private String goodsId 的样式
- Java获取数据库日期字段,后面有.0的解决方法。 |浏览:2416|更新:2013-06-27 17:22|标签:java 我们一般获取数据库字符串,在得到行后,就会用getString获取字符串
- 数据库有些字段允许为空值,但在用reader.getstring(1)读取空值字段时出错的解决
- 数据库ntext,text字段的内容批量替换储存过程 转
- jdbc 通过rs.getString()获取数据库中的时间字段问题
- 新增clob字段到数据库表中,按一定的样式插入储存。
- 数据库CLOB字段转化成STRING
- 数据库ntext,text字段的内容批量替换储存过程.
- jdbc 通过rs.getString()获取数据库中的时间字段问题
- JAVA中将String类型转为Date写入数据库的datatime类型字段中
- jdbc操作数据库并自动获取字段类型
- 数据库修改字段
- SQL Server将数据库中多行中的某个字段转换为字符串
- sql server 查询所有数据库,一个数据库中所有表和表的所有字段
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 数据库的表字段自动转换为java实体类
- Mybatis属性和数据库表字段不一致处理
- 两数据库字段差异比较