Java实现 中文转换成Unicode编码 和 Unicode编码转换成中文

本文详细介绍了一段Java代码,该代码实现从GB编码到Unicode的转换,以及从Unicode到GB编码的逆向转换。文章展示了如何使用Java进行字符串编码转换,包括将字符串转换为Unicode编码,以及如何从Unicode编码还原回原始的GB编码字符串。此外,还介绍了如何使用HTMLDecoder进行HTML解码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package Test01;

import java.util.Properties;   
public class Test {           
    public static void main(String[] args) {           
        String s = "简介";          
        String tt = gbEncoding(s);         
        System.out.println(decodeUnicode("\\u7b80\\u4ecb"));     
        System.out.println(HTMLDecoder.decode("开始"));        
        String s1 = "\u7b80\u4ecb";         
        System.out.println(s.indexOf("\\"));        
        }        
    public static String gbEncoding(final String gbString) {        
        char[] utfBytes = gbString.toCharArray();              
        String unicodeBytes = "";               
        for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) { 
            String hexB = Integer.toHexString(utfBytes[byteIndex]);                      
            if (hexB.length() <= 2) {                          
                hexB = "00" + hexB;                    
                }                      
            unicodeBytes = unicodeBytes + "\\u" + hexB;                  
            }                  
        System.out.println("unicodeBytes is: " + unicodeBytes);                  
        return unicodeBytes;            }                    
    public static String decodeUnicode(final String dataStr) {               
        int start = 0;                 
        int end = 0;               
        final StringBuffer buffer = new StringBuffer();                 
        while (start > -1) {                    
            end = dataStr.indexOf("\\u", start + 2);                     
            String charStr = "";                     
            if (end == -1) {                         
                charStr = dataStr.substring(start + 2, dataStr.length());                    
                } else {                       
                    charStr = dataStr.substring(start + 2, end);                     
                    }                    
            char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。                   
            buffer.append(new Character(letter).toString());                   
            start = end;                 
            }                 
        return buffer.toString();            
        }        
    }

Java中,可以轻松地将汉字换为其对应的Unicode码点。这是因为Java字符串是以UTF-16格式存储的,并且所有字符都是基于Unicode标准来表示的。下面详细介绍如何实现这一功能并提供相应示例代码。 ### 步骤说明 #### 方法一:通过`Character.codePointAt()`获取单个字符的Unicode值 对于一个给定的字符串中的每一个字符,我们可以遍历该字符串然后调用静态方法 `codePointAt(CharSequence seq, int index)` 来得到其Unicode编码。 **样例代码** ```java public class Main { public static void main(String[] args) { String str = "你好世界"; for (int i=0; i<str.length();i++) { char c = str.charAt(i); // 输出每个字符及相应的Unicode码点 System.out.println("Char: "+c+", Unicode Code Point: "+Integer.toHexString(Character.codePointAt(str,i))); } } } ``` 运行上述程序会打印出如下结果: ``` Char: 你, Unicode Code Point: 4f60 Char: 好, Unicode Code Point: 597d Char: 世, Unicode Code Point: 4e16 Char: 界, Unicode Code Point: 754c ``` 这里我们把Unicode了十六进制更直观的形式展示出来。(如“你”的Unicode为4F60) --- #### 方法二:使用`String.format()` 另一种简单的方式是借助于`String.format()`函数构造所需的Unicode表达式形式(\uXXXX),其中XXXX代表四位的十六进制数。 **样例代码** ```java public class Test2{ public static void main(String []args){ String s="你"; StringBuilder sb=new StringBuilder(); // 遍历整个字符串生形似 \uxxxx 的输出序列 for(int i=0;i<s.length();i++){ int val=s.charAt(i); if(val>255) sb.append("\\u"+ Integer.toHexString(val)); else sb.append(s.charAt(i)); } System.out.print(sb.toString()); } } ``` 执行上面的脚本将会获得类似这样的输出内容`\u4F60`,这正是"你"字所对应的完整Unicode表示法。 --- #### 注意事项 当涉及到超出基本多文种平面(BMP)之外的大字符集时,请特别注意补充代理对的支持情况;此外还要留意不同平台间可能存在的差异等细节因素影响最终效果呈现与否的问题所在之处哦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值