2013-05-07 166 views
0

我無法修剪Java中的unicode控制字符\u0085。你怎麼能這樣做?如何在Java中修改字符串中的Unicode u0085字符

String str = "\u0000\u001f\u0085 hi \n" 
PrintStream out = new PrintStream(System.out, true, "UTF-8"); 
out.println(teststr); 
String st = teststr.replaceAll("\\p{Cntrl}", ""); 
out.println(st); 

字符\u0085被打印爲?似乎並沒有被取代。

+1

相關:http://stackoverflow.com/questions/6198986/how-can-i-replace-non-printable-unicode-characters-in-jav – Nicktar 2013-05-07 09:46:16

回答

1
import java.util.regex.Matcher; 
    import java.util.regex.Pattern; 

    public static String trimUtf16(String test) { 
     Pattern unicode = Pattern.compile("[^\\x00-\\x7F]", 
       Pattern.UNICODE_CASE | Pattern.CANON_EQ 
         | Pattern.CASE_INSENSITIVE); 
     Matcher matcher = unicode.matcher(test); 
     test = matcher.replaceAll(" "); 
     return test; 
    } 
    System.out.println(trimUtf16("\u0000\u001f\u0085 hi \n"));// hi 
+0

感謝!這工作...我不認爲我理解的代碼,但。我有一個輸入流在utf-8中,我想修剪輸入流中的'\ u0085'字符......我正在測試使用字符串來查看我是否能夠替換字符串中的字符。 – user1101293 2013-05-07 10:01:35

+0

我明白了.. \ u0085是一個utf16字符... U + 0085的utf8字符是0xC2 0x85 ...謝謝!你的迴應非常有用。 – user1101293 2013-05-07 10:14:28

+0

我有一個輸入流包含有效的utf8字符0xC2 0x85(U + 0095)。我如何在java中正確讀取它?使用字節數組並沒有幫助,我認爲0x85超出範圍。基本上,我需要讀取來自java中包含0xC2 0x85的套接字的utf8字符。 – user1101293 2013-05-07 15:45:39