【发布时间】:2012-06-16 18:22:42
【问题描述】:
我得到的用户输入包括非 ASCII 字符和不可打印字符,例如
\xc2d
\xa0
\xe7
\xc3\ufffdd
\xc3\ufffdd
\xc2\xa0
\xc3\xa7
\xa0\xa0
例如:
email : abc@gmail.com\xa0\xa0
street : 123 Main St.\xc2\xa0
想要的输出:
email : abc@gmail.com
street : 123 Main St.
使用 Java 删除它们的最佳方法是什么?
我尝试了以下方法,但似乎不起作用
public static void main(String args[]) throws UnsupportedEncodingException {
String s = "abc@gmail\\xe9.com";
String email = "abc@gmail.com\\xa0\\xa0";
System.out.println(s.replaceAll("\\P{Print}", ""));
System.out.println(email.replaceAll("\\P{Print}", ""));
}
输出
abc@gmail\xe9.com
abc@gmail.com\xa0\xa0
【问题讨论】:
-
为什么要删除它们?
-
@jtahlborn,Mongo 无法序列化这些值
-
@daydreamer [需要引用] \xc2d 是一个有效的 Unicode 字符。如果 MongoDB 使用 UTF-8 应该能够序列化它们。也许你在这里有一个 XY 问题?你是如何序列化你的文本的?