- 浏览: 1363659 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (287)
- oracle (30)
- Java (73)
- MySQL (16)
- Myeclipse/eclipse (12)
- javascript (15)
- JSP/Servlet (7)
- maven (14)
- AJAX (2)
- JQuery (9)
- tomcat (8)
- spring (21)
- Linux (28)
- PHP (9)
- UI (1)
- 编程错误及处理 (38)
- 多线程 (18)
- hibernate (10)
- Web Service (3)
- struts2 (6)
- log4j (3)
- SVN (4)
- DWR (1)
- lucene (1)
- 正则表达式 (4)
- jstl (2)
- SSL (3)
- POI (1)
- 网络编程 (1)
- 算法 (2)
- xml (4)
- 加密解密 (1)
- IO (7)
- jetty (2)
- 存储过程 (1)
- SQL Server (1)
- MongoDB (1)
- mybatis (1)
- ETL (1)
- Zookeeper (1)
- Hadoop (5)
- Redis (1)
- spring cloud (1)
最新评论
-
ron.luo:
牛逼,正解!
maven设定项目编码 -
lichaoqun:
java.sql.SQLException: Can't call commit when autocommit=true -
Xujian0000abcd:
Thanks...
Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the clas -
renyuan2ni:
[i][b][u]引用[list]
[*][img][flas ...
Manual close is not allowed over a Spring managed SqlSession -
851228082:
宋建勇 写道851228082 写道<!-- 文件拷贝时 ...
maven设定项目编码
碰到可能会截取汉字的情况,当然是要不能截取出乱码来,就是不能对整个汉字截取一半。如"我ABC汉字d"这个字符串,截取5个字节的时候,应该是"我ABC",而截取8个字节的时候,应该是"我ABC汉",而不应该是"我ABC汉?",其中"?"为半个汉字,可理解为向前截取
备注:将字符编码GBK改为UTF-8,则每个中文长度按3个字符计算
以下方法是向后截取字符串
以下代码会出现半个汉字问题
public static String subStr(String str, int subSLength) throws UnsupportedEncodingException{ if (str == null) return ""; else{ int tempSubLength = subSLength;//截取字节数 String subStr = str.substring(0, str.length()<subSLength ? str.length() : subSLength);//截取的子串 int subStrByetsL = subStr.getBytes("GBK").length;//截取子串的字节长度 //int subStrByetsL = subStr.getBytes().length;//截取子串的字节长度 // 说明截取的字符串中包含有汉字 while (subStrByetsL > tempSubLength){ int subSLengthTemp = --subSLength; subStr = str.substring(0, subSLengthTemp>str.length() ? str.length() : subSLengthTemp); subStrByetsL = subStr.getBytes("GBK").length; //subStrByetsL = subStr.getBytes().length; } return subStr; } }
备注:将字符编码GBK改为UTF-8,则每个中文长度按3个字符计算
以下方法是向后截取字符串
public static String subStr_1(String str, int start, int end) throws UnsupportedEncodingException{ if (str == null) return null; String chinese = "[\u0391-\uFFE5]"; byte[] b = str.getBytes("UTF-8"); String temp = new String(b, start, end); String last = getLastStr(temp); while(!last.matches(chinese)){ temp = new String(b, start, ++end); last = getLastStr(temp); } return new String(b, start, end); } public static String getByteStr(String str, int start, int end) throws UnsupportedEncodingException{ byte[] b = str.getBytes("UTF-8"); return new String(b, start, end); }
以下代码会出现半个汉字问题
/** * ReadFileByteBuffer.java * cn.com.songjy.test.io * Function: TODO * * version date author * ────────────────────────────────── * 1.0 2013-8-31 songjy * * Copyright (c) 2013, TNT All Rights Reserved. */ package cn.com.songjy.test.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.FileChannel; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * ClassName:ReadFileByteBuffer * * @author songjy * @version 1.0 * @since v1.0 * @Date 2013-8-31 下午12:15:21 */ public class ReadFileByteBuffer { private static Log log = LogFactory.getLog(ReadFileByteBuffer.class); public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("pom.xml");/*创建文件输入流*/ FileChannel fc = fis.getChannel(); ByteBuffer bb = ByteBuffer.allocate(64);//每次取出64字节 /*将FileChannel中的数据放入ByteBuffer*/ while(-1 != fc.read(bb)){ bb.flip();/*锁定ByteBuffer的空白区*/ Charset charset = Charset.forName("UTF-8");/*创建Charset对象*/ CharsetDecoder decoder = charset.newDecoder();/*创建解码器(CharsetDecoder)对象*/ CharBuffer cb = decoder.decode(bb);/*将ByteBuffer的内容转码*/ log.info(cb); bb.clear(); } } catch (FileNotFoundException e) { log.error(e.getMessage(), e); } catch (IOException e) { log.error(e.getMessage(), e); } } } /*会出现java.nio.charset.MalformedInputException错误,原因是“半个中文问题”*/
发表评论
-
java.io.NotSerializableException: java.util.ArrayList$SubList
2016-03-15 11:36 2776错误信息: 原代码: if (null != dto ... -
java.lang.NoSuchMethodError
2015-10-30 19:50 1076在执行命令 java -Djava.ext.dirs=./de ... -
OutOfMemoryError
2015-01-07 10:49 628错误信息: 执行命令(修改前): java -Djava. ... -
自定义ClassLoader
2014-12-14 17:13 852一、自定义类加载器代码: package foo; im ... -
URL传递中文参数乱码问题
2014-03-14 12:55 1108项目特殊要求,form表单使用get方式提交,由此出现了中文乱 ... -
Java使用正则进行奇偶替换
2013-12-30 11:20 1549/** * 将位于偶数位的数字1替换为2 */ ... -
Java调用ping命令
2013-11-26 10:26 3616package cn.com.songjy; impor ... -
Linux开机启动Java程序
2013-11-25 15:26 3525一、编写启动Java程序shell脚本(smssend.sh) ... -
单例模式
2013-11-05 09:58 751Java之美[从菜鸟到高手演变]之设计模式 Java开发中 ... -
判定2个对象相等之重写equals方法
2013-10-18 11:03 1046package cn.com.songjy.test; ... -
SAX解析XML文件示例
2013-09-13 17:32 1003package cn.com.songjy.test.xml; ... -
二分查找算法(Binary Search)
2013-09-13 17:01 2366项目中遇到需要从数组中查找数据,但是算法很多,于是根据项目需求 ... -
Iterate over rows and cells(EXCEL文件的读取)
2013-09-13 14:13 4049package cn.com.songjy.test.exce ... -
jdk1.5的Exchanger同步工具
2013-08-27 14:04 645package cn.com.songjy.test.sock ... -
jdk1.5的CountDownLatch同步工具
2013-08-27 13:37 752package cn.com.songjy.test.sock ... -
jdk1.5的Semaphere同步工具
2013-08-23 14:20 1050package cn.com.songjy.test.so ... -
jdk1.5条件阻塞Condition的应用
2013-08-23 09:42 1316package cn.com.songjy.test.sock ... -
jdk1.5读写锁技术的妙用
2013-08-19 22:00 1354/** * ReadWriteLockTest.java ... -
jdk1.5的线程锁技术
2013-08-19 20:25 924/** * LockTest.java * cn.co ... -
Callable与Future的应用
2013-08-19 20:03 1027/** * CallableAndFuture.java ...
相关推荐
java编写一个截取字符串的函数,输入为一个字符串和字节数
指定截取字节数,截取字符串,但是不能出现半个汉字的情况,例如: 字符串"喊sd中d王",长度2byte为:喊,长度3byte为:喊s,长度4byte为:喊sd,长度5byte为:喊sd,长度6byte为:喊sd中
IO流 输出、输入字节流,并且任意截取字符串的长度,
核心思路:输入一个字符串和字节数,输出按字节数截取字符串, 其中要保证汉字不能被截半个字节,设计思路就是判断汉字占几个字节,通过string.valueof.getBytes()方法获取字符的字节数,之后遍历判断不要超过指定的...
jsp截取中文字符串 len为字节长度
java字符串操作大全,适合初学者,浅显易懂 部JAVA字符串操作 2008-07-11 15:39:42| 分类: JAVA | 标签: |字号大中小 订阅 . JAVA字符串的方法 String a = "53c015"; //Integer.parseInt(s, radix) radix设置为...
做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,各种坑。 让后台程序截一下,又各种推托,让后台按字节截一下更是和要了后台老命一样,最后可能只会安字符...
56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和javasciprt 的区别。 15 61、什么时候用assert? 16 62、error和exception有什么...
实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 ...
实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...
实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5...
实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...
实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...
varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...
Rhino是一个由Java实现的JavaScript语言解析引擎,Rhino的主要功能是管理脚本执行时的运行环境 非HTML解析: PDF文件:PDFBox解析PDF文件 FontBox:处理PDF字体的Java类库 JempBox处理XMP元数据 的Java类库 Office...
56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和javasciprt 的区别。 15 61、什么时候用assert? 16 62、error和exception有什么...
//将一个文件看做是一个字节数组 //用下标值访问摸个位置的字节值 创建实例 ----------------------- 1 RandomAccessFile raf= new RandomAccessFile(文件,“r”) r 只读模式 1 RandomAccessFile raf= new ...