我试图将所有Windows特殊字符转换为其Unicode等效字符.我们有一个Flex应用程序,用户可以在其中保存一些Rich Text,然后通过Java Emailer通过电子邮件发送给他们的收件人.但是,我们继续遇到Word的特殊字符,这些字符只是在电子邮件中显示为?
到目前为止我已经尝试过了
private String replaceWordChars(String text_in) {
String s = text_in;
// smart single quotes and apostrophe
s = s.replaceAll("[\‘|\’|\‚]", "\'");
// smart double quotes
s = s.replaceAll("[\“|\”|\„]", "\"");
// ellipsis
s = s.replaceAll("\…", "...");
// dashes
s = s.replaceAll("[\–|\—]", "-");
// circumflex
s = s.replaceAll("\\u02C6", "^");
// open angle bracket
s = s.replaceAll("\‹", "
// close angle bracket
s = s.replaceAll("\›", ">");
// spaces
s = s.replaceAll("[\\u02DC|\\u00A0]", " ");
return s;
哪个有效,但我不想将所有Windows-1252字符编码为等效的UTF-16(假设这是默认的Java字符集)
但是,我们的用户不断从Microsoft Word中找到Java无法处理的更多字符.所以我搜索并搜索了这个例子
private String replaceWordChars(String text_in) {
String s = text_in;
try {
byte[] b = s.getBytes("Cp1252");
byte[] encoded = new String(b, "Cp1252").getBytes("UTF-16");
s = new String(encoded, "UTF-16");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return s;
但是,当我在Eclipse调试器中观察编码时,没有任何变化.
必须有一个简单的解决方案来处理微软可爱的Java编码.
有什么想法吗?