Tag: 代理对

如何删除Java中的代理字符?

我面临的情况是我在文本中获取Surrogate字符,我将保存到MySql 5.1。 由于此不支持UTF-16,我想在将其保存到数据库之前通过java方法手动删除这些代理对。 我现在已经编写了以下方法,我很想知道是否有一种直接和最佳的方法来处理这个问题。 在此先感谢您的帮助。 public static String removeSurrogates(String query) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < query.length() – 1; i++) { char firstChar = query.charAt(i); char nextChar = query.charAt(i+1); if (Character.isSurrogatePair(firstChar, nextChar) == false) { sb.append(firstChar); } else { i++; } } if (Character.isHighSurrogate(query.charAt(query.length() – 1)) == false […]

Java charAt用于具有两个代码单元的字符

来自Core Java ,第一卷。 1,第9版,p。 69: 字符ℤ需要两个UTF-16编码的代码单元。 调用 String sentence = “ℤ is the set of integers”; // for clarity; not in book char ch = sentence.charAt(1) 不返回空格而是返回second的第二个代码单元。 但似乎sentence.charAt(1) 确实返回了一个空格。 例如,以下代码中的if语句的计算结果为true 。 String sentence = “ℤ is the set of integers”; if (sentence.charAt(1) == ‘ ‘) System.out.println(“sentence.charAt(1) returns a space”); 为什么? 我在Ubuntu 12.10上使用JDK SE 1.7.0_09,如果它是相关的。

Java无法在文件名中打开具有代理Unicode值的文件?

我正在处理使用文件执行各种IO操作的代码,我想让它能够处理国际文件名。 我正在使用Java 1.5处理Mac,如果文件名包含需要代理的Unicode字符,则JVM似乎无法找到该文件。 例如,我的测试文件是: “草鷗外.gif”被破解成Java字符\u8349\uD85B\uDFF6\u9DD7\u5916.gif 如果我从这个文件名创建一个文件,我无法打开它,因为我得到一个FileNotFoundexception。 即使在包含该文件的文件夹上使用它也会失败: File[] files = folder.listFiles(); for (File file : files) { if (!file.exists()) { System.out.println(“Failed to find File”); //Fails on the surrogate filename } } 我实际处理的大部分代码都是以下forms: FileInputStream instream = new FileInputStream(new File(“草鷗外.gif”)); // operations follow 有没有办法解决这个问题,要么转义文件名,要么以不同的方式打开文件?