现在的位置: 首页 > 综合 > 正文

解决全角半角问题

2013年05月11日 ⁄ 综合 ⁄ 共 1204字 ⁄ 字号 评论关闭

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;
  }

 }
原帖来自于网易社

抱歉!评论已关闭.