中文与unicode互转

package conversion;
public class Conversion {
   
    /**
     * 中文转unicode
     * @param str
     * @return 反回unicode编码
     */
    public String  chinaToUnicode(String str)
    {
        String result = null;
        for (int i = 0; i < str.length(); i++)
        {
            int chr1 = (char) str.charAt(i);
            result  += "\\u" + Integer.toHexString(chr1);           
        }
        return result;
    }

    /**
     * unicode转中文
     * @param  str
     * @return 中文
     */
     public void unicodeToChinese(String str)
     {         
         
         for(char c : str.toCharArray())             
             
         System.out.print(c);   
         
     }
     
     public static void main(String args[])
     {      
        //unicode转中文
         String str = "\u767b\u5f55\u793e\u533a";
         Conversion  con = new Conversion();
         
         con.unicodeToChinese(str);           
         //for(char c : str.toCharArray())         
         //System.out.print(c);
                 
    }
     
}

package conversion;

/*从键盘上读取字节,输出字节,遇到Byte时退出
 .构造方法:
 .String(byt[] bytes,int offset,int length)
 .equalsIgnoreCase方法,不区分大小写
 .indexOf(int ch)方法,用于返回字符首次出现的位置
 */
public class ReadLine {
    public static void main(String[] args)
    {
        byte[] buf = new byte[1024];     //字节当中输入字符最大为1024个字节
        String strInfo = null;                  //字符串对象
        int pos = 0;                                 //显示初始化未知
        int ch = 0;                                   //每次读取的字节
        Conversion conv = new Conversion();   
        System.out.println("请输入汉字:");
        while (true)                                   //不停的读取键盘输入
        {
            try
            {
                ch = System.in.read();         //从键盘上读取字节
            } catch (Exception e)
            {
                e.printStackTrace();
            }
            switch (ch)
            {
                case ''\r'' :                                     //回车时不处理
                    break;
                case ''\n'' :                                     //换行                  
               
                strInfo = new String(buf, 0, pos);                 //转换字节为字符从buff的0个开始到pos个转换
if (strInfo.equalsIgnoreCase("bye"))
                {
                    return;                                     //返回主函数
                } else if(strInfo == null)
                {                                             
                    pos = 0;                                     //清零
                    break;                                         //跳出来
                }
                else
                {
                                                                        //输出unicode编码
                    //conv.unicodeToChinese(strInfo);
                    System.out.println(conv.chinaToUnicode(strInfo).substring(4));
                    pos = 0;                                      //清零
                    break;                                          //跳出来
                }
                default :
                    buf[pos++] = (byte) ch;             //CH附值给buf的pos
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值