汉字转换成NCR编码的字符

本文介绍了一种在不同编码网页上正确显示汉字的方法:通过将汉字转换为NCR(Numeric Character Reference)编码。该方法可以确保在各种编码环境下汉字都能正常显示,避免乱码问题。文章提供了一个具体示例,展示了如何将GBK编码的汉字转换为NCR编码。
在 ISO-8859-1 编码的网页上显示汉字。一种解决办法就是我们不用 ISO-8859-1 或者 GB2312 编码,而统统都采用 UTF-8 编码。另一种就是把除了 ISO-8859-1 编码中前128个字符以外的所有其他的编码都用 NCR来表示。
NCR编码是由一个与号(&)跟着一个井号(#), 然后跟着这个字符的Unicode编码值, 最后跟着一个分号组成的。无视载体文件编码,无论你是gbk编码还是utf-8编码,展示的字符都不会出现乱码,这点就是它存在的原因。 
/**
    *
    * Methods Descrip:汉字转换成NCR编码的字符
    *
    * @param str:以GBK编吗的汉字
    * @return:NCR编码的字符串
    * 
    */
   public String ChangeGB2NCR(String str) {
       String res = "";
       try {
        String[] w = new String[str.length()];
        for(int i =0;i<str.length();i++){
        w[i]= str.substring(i,i+1);
         byte[] utf_16E = w[i].getBytes("utf-16be");
                String Str16k = byteTo16String(utf_16E);
                int ncrNum = Integer.parseInt(Str16k, 16);
res = res + "&#" +ncrNum + ";";        
        }
       } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
       }
       return res;
   }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值