我有一个问题,即最终用户从HTML提交数据的时间 在Web应用程序中,它们正在从Word复制数据 包含长短划线或短划线的文档。
根据逻辑,我们试图从数据库中读取这些数据 将它写入excel文件。
作为结果,这些字符在excel中生成,如图所示 下面,其中包含一种问号。
Actual output : 1993 � 1995
Expected output : 1993 – 1995
我在Java中完成了UTF-8编码,但仍然在excel中获得相同的输出。怎么解决这个问题?
以下是我的代码摘录。
try {
keyStrenghts = new String(keyStrenghts.getBytes("utf-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我正在使用JDK 6和apache poi来生成excel文件。
答案 0 :(得分:1)
如果仅限于破折号,这可能会解决您的问题:
keyStrenghts = keyStrenghts.replaceAll("\\p{Pd}", "-");
这是使用正则表达式将所有短划线替换为ascii" - "如上所述here。
答案 1 :(得分:0)
for的Unicode是:\ uFFFD
keyStrenghts = "1993 � 1995";
if(keyStrenghts.contains("\uFFFD")){
keyStrenghts = keyStrenghts.replace("\uFFFD","-");
}
现在,如果你打印keyStrenghts,你会得到:1993 - 1995