love fish大鹏一曰同风起,扶摇直上九万里

常用链接

统计

积分与排名

friends

link

最新评论

含有中文字符串的截取问题!(转)

问题:
     字符串:music<<美丽的草原我的家>>。该字符串的长度即str.length()为:17,而目前需要存入数据库对应的字段长度为:16。所以必须对字符串进行截取。而前16个字节中,“原”字只有半个。这样存入数据库确对会出现“?”。所以必须判断是否是半个汉字,即只能存入“music<<美丽的草”。
分析:
     汉字是双字节编码,它为了能够与英文字符分开,每个字节的最高位一定为1。如果是汉字,那么这个字节就是小于0的。这个函数就是通过这一原理实现的。所以要通过getBytes()转化为byte型,再比较与零的大小。 getBytes()是把一个字符串转成一个byte数组,因为计算机的数据都是基于字符的,也就是说一个字符串实际上就是一个字符流,因此可以转为字符数组。
程序:
   public  static  String  getStr(String  src,  int  len)  {  
       
if  (src  ==  null)              return  null;  
       
if  (src.getBytes().length  <=  len)    return  src;  
 
       
byte[]  s  =  src.getBytes();  
       
int  flag  =  0;  
       
for(int  i=0;i<len;++i){  
         
if(s[i]  <  0)  flag++;    
       }
  
       
if(flag%2!=0)  len--;          
 
       
byte[]  d  =  new  byte[len];  
       System.arraycopy(s,  
0,  d,  0,  len);  
       
return  new  String(d);  
   }
 

posted on 2006-05-23 17:45 liaojiyong 阅读(444) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: