如何在java中转换em dash

时间:2017-03-02 07:43:56

标签: java utf-8 apache-poi

  

我有一个问题,即最终用户从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文件。

2 个答案:

答案 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