解决全角半角问题

1、首先,需要知道的是中文编码的种类,有:GB2312 、GBK、Unicode、UTF8、BIG5等。现在大多数的应用软件都采用Unicode编码,在JAVA的内部也是如此。所以关于上述问题,只需要对字符的Unicode编码进行一个相应的处理就可以解决。

2、下面说明一下Unicode编码,该编码采用双字节编码方式,对所有字符,都采用2个字节编码,即4byte,这点很重要,我们只需要对这4byte进行处理就可以完成相应字符的转换了。另外在Unicode编码中,标点、数字、字母的编码与汉字的编码在最高位会有明显区别。有兴趣可以参看Unicode 编码表

3、关于全角转半角的问题,在Unicode中,标点、数字、字母的半角编码最高位均为0,它们的全角编码与半角编码的第三位相差32h。

根据上面的结论,实现的全角转半角的JAVA代码如下,至于半角转全角,加变减就成了:

public class change {
   
    public static void main(String[] args) {
   
     String QJstr="hello!! 全角转换,DAO";
    
     String result=SBCchange(QJstr);
   
     System.out.println(QJstr+"/n"+result);
 
 }
 
 
 public static final String SBCchange(String QJstr)
 {
     String outStr="";
     String Tstr="";
     byte[] b=null;

     for(int i=0;i<QJstr.length();i++)
     {    
      try
      {
       Tstr=QJstr.substring(i,i+1);
       b=Tstr.getBytes("unicode");
      }
      catch(java.io.UnsupportedEncodingException e)
      {
       e.printStackTrace();
      }    
  
      if (b[3]==-1)
      {
       b[2]=(byte)(b[2]+32);
       b[3]=0;     
       
       try
       {      
        outStr=outStr+new String(b,"unicode");
       }
       catch(java.io.UnsupportedEncodingException e)
       {
        e.printStackTrace();
       }     
      }else outStr=outStr+Tstr;
     }
   
     return outStr;
  }

 }
原帖来自于网易社

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值