有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

unicode如何在java中转换外来字符?

我输入了一个UNICODE字符串,我想将其转换为\uxxx格式,但如果我编写此代码

    String inString = "èaéKlüfsäöråédéroße";
    for (int i = 0; i < inString.length(); i++) {
        Integer charCode = (int)inString.charAt(i);
        result += "\\u" + strlenFix(charCode.toString().toUpperCase());
    }
    static public String strlenFix(String str) {
    while (str.length()<4) str="0"+str;
    return str;
}

我有一个结果:

\u65533\u0097\u65533\u0075\u0108\u65533\u0102\u0115\u65533\u65533\u0114\u65533\u65533\u0100\u65533\u0114\u0111\u65533\u0101

共 (5) 个答案

  1. # 1 楼答案

    所以,只要做:

    public static String unicodeEscaped(char ch) {
      if (ch < 0x10) {
          return "\\u000" + Integer.toHexString(ch);
      } else if (ch < 0x100) {
          return "\\u00" + Integer.toHexString(ch);
      } else if (ch < 0x1000) {
          return "\\u0" + Integer.toHexString(ch);
      }
      return "\\u" + Integer.toHexString(ch);
    }
    String inString = "èaéKlüfsäöråédéroße";
    for (int i = 0; i < inString.length(); i++) {
        Integer charCode = (int)inString.charAt(i);
        result += unicodeEscaped(charCode);
    }
    
  2. # 2 楼答案

    这些\uXXXX转义通常后跟一个4位的十六进制数字

    将代码点转换为这种Unicode转义的最简单方法是使用String.format

    String escaped = String.format("\\u%04X", (int) codePoint);
    

    您可以删除strlenFix函数,这样您的循环就是:

    for (int i = 0; i < inString.length(); i++) {
        result += String.format("\\u%04x", (int) inString.charAt(i));
    }
    
  3. # 3 楼答案

    再次调用引用上的静态方法

    因此,您认为charCode.toString(16)将调用charCode上的toString并返回其16个基本版本,但它被编译为Integer.toString(16)

    您可能想要类似Integer.toString(charCode,16)的东西

  4. # 4 楼答案

    查看以下代码段

    public static void main(String[] args) {
    
    String result = "";
     String inString = "èaéKlüfsäöråédéroße";
                for (int i = 0; i < inString.length(); i++) {
        result += "\\u" + Integer.toHexString(inString.charAt(i) | 0x10000)+" ";
        }
        System.out.println(result);
    }
    
  5. # 5 楼答案

    试试这个

        public static void main(String[] args) {
        String result = "";
    
         String inString = "èaéKlüfsäöråédéroße";
            for (int i = 0; i < inString.length(); i++) {
                Integer charCode = (int)inString.charAt(i);
                result += "\\u" + Integer.toHexString(charCode) ;
            }
        System.out.println(result);
    }
    
     static public String strlenFix(String str) {
            while (str.length()<4) str="0"+str;
            return str;
        {