我遇到了一个奇怪的问题。请看下面的代码:

public static String toUNICODE(String s) {
  StringBuilder sb=new StringBuilder();
  for(int i=0;i<s.length();i++) {
    System.out.println(s.charAt(i));
    if(s.charAt(i)<=256) {
      sb.append("\\u00");
    } else {
      sb.append("\\u");
    }
    sb.append(Integer.toHexString(s.charAt(i)));
  }
  return sb.toString();
}

它将字符解析为 Unicode。它在 Eclipse 中运行良好。但是当我在 JDeveloper IDE 中测试它时,我得到了错误的结果。例如,在 Eclipse 中,当输入为“我”时,我会得到 \u6211,这是正确的答案。而我将在 JDeveloper 中获得\u00e6\u2c6\u2018。

请赐教为什么。

最佳答案

当您将 "我" ( 0xE6 0x88 0x91 ) 的 UTF-8 字节解释为 Windows-1252 时,您将获得 "我"
当您将 "我" 传递给您的函数时,结果是 \u00e6\u2c6\u2018 。所以你在某个地方
输入 UTF-8,但程序只是在 Windows-1252 中解释它。

您的问题中没有关于您如何进行输入或阅读的信息,但是一旦您添加了该信息,这应该很容易解决。

顺便说一句,您的函数因 0x100-0xFFF 范围内的代码点而被破坏,而忽略了这些代码点的填充。以及超过 0xFFFF 的代码点。

关于java - 一种将字符解析为 Unicode 的函数在 Eclipse 中有效,但在 JDeveloper 中无效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14027345/

10-13 03:40