繁体   English   中英

如何在Java中替换不支持的utf8字符

[英]How to replace unsupport utf8 character in java

Java不支持所有utf-8字符,例如

public static void main(String[] args){

    Character cha = new Character('\uD841');
    System.out.println(cha.compareTo(Character.MIN_VALUE));
    String ts = "this is a test string";
    StringBuilder sb = new StringBuilder();
    sb.append(ts);
    sb.append(cha);
    ts = sb.toString();
    for(int i =0;i<ts.length();i++){
        System.out.println(Character.isLetter(ts.charAt(i)));
    }
}

它将显示“这是测试字符串吗?” 如何确保不支持哪个字符?

您看到的不是“ Java不支持字符”,而是“您的控制台不支持该字符”或“您的平台默认编码不支持您的字符”。

  1. 如果您坚持不存在“ UTF-8字符”之类的东西,而是“ Unicode字符”
  2. Java可以处理当前Unicode标准中的所有字符
  3. 当写入文件或控制台时,它使用一种编码将这些字符转换为字节(因为这是通用接口)。
  4. 如果仅打印到System.out则它将使用平台默认编码。 如果平台默认编码无法对字符进行编码,则该字符将转换为替换字符(默认为? )。

最后但并非最不重要的一点: \? 不是有效的Unicode字符 这是一个很高的替代值,并且这些值已明确从Unicode标准中排除(因为它们在UTF-16中用于对BMP之外的字符进行编码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM