• String Unicode转码问题


    Unicode转成中文

    范例代码:

    public static String unicode2utf(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();
    }

    中文字符串转成unicode

    范例代码:
    public static String str2unicode(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;
    }
    测试结果:
    要注意的地方:
    在上面的main方法中做测试的时候
    如果要写成下面的这种形式,是会出错的
    写法:
    String utfStr = unicode2utf("u4e2du56fd") ;

    错误信息:


    原因:unicode码本身就包含了字符集,它给语言中的每个都设定了统一并且唯一的二进制编码,所以如果你写成“u4e2du56fd”,它的结果就是你需要的字符,如果按照上面的写法写的话,那么方法传入的参数就是unicode2utf(中国)了,而不是要转码的unicode码。
    可以试一下:

    System.out.println("u4e2du56fd");
    结果就是“中国”
    如果非要用方法去转,那么就需要对引号内我们要传入的参数中的“”转义
     
    String utfStr = unicode2utf("\u4e2d\u56fd") ;

    这样的话结果就是对的。

     

  • 相关阅读:
    UEFI Protocol
    MFC使用自定义资源加载PNG
    C/C++中的static关键字详解
    spring boot 日志配置 默认的日志配置
    Profile 多环境支持
    YAML语法
    nginx 启动出现 [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
    Nginx日志切割
    Linux 系统安装Nginx
    spring boot Lombok使用方法
  • 原文地址:https://www.cnblogs.com/yaoxiaoxing/p/5097926.html
Copyright © 2020-2023  润新知