2017-03-02 5 views
0

Ich habe ein Problem, wo, wenn der Endbenutzer übermittelt die Daten von HTML Form in einer Web-Anwendung, werden sie das Kopieren der Daten aus Word Dokument, das enthält langer Strich oder em dash konvertieren Strich.Wie em in Java

Gemäß der Logik versuchen wir, diese Daten aus der Datenbank zu lesen und schreiben es in eine Excel-Datei.

Als Ergebnis werden diese Zeichen im Excel erzeugt, wie unten gezeigt , die eine Art Fragezeichen enthält.

Actual output : 1993 � 1995 
Expected output : 1993 – 1995 

Ich habe die UTF-8-Codierung in Java getan, aber immer noch die gleiche Leistung in der Excel bekommen. Wie löst man das?

Unten ist der Auszug meines Codes.

try { 
     keyStrenghts = new String(keyStrenghts.getBytes("utf-8")); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

Ich verwende JDK 6 und Apache Poi, um die Excel-Datei zu generieren.

Antwort

0

Dies könnte Ihr Problem lösen, wenn es beschränkt sich auf em Striche:

keyStrenghts = keyStrenghts.replaceAll("\\p{Pd}", "-"); 

Dies ist eine regex alle die Striche mit ascii ersetzen „-“ als here angegeben.

+0

Gemäß dem Link sollte es funktionieren, aber es funktioniert nicht, auch in Eclipse-Konsole Der EM-Bindestrich wird nicht gedruckt und erscheint nur als Fragezeichen. Irgendeine Idee? – prabu

+1

Das Problem ist möglicherweise nicht das, was Sie erwarten - der Treiber beschädigt auf dem Weg zur Datenbank, weit zurück von der Datenbank, oder es ist nicht wirklich der Charakter, den Sie denken, dass es ist. Versuchen Sie zu beweisen, welche Ihrer Annahmen falsch ist, indem Sie die Verbindung mit der Datenbank mithilfe des Befehlszeilentools herstellen, das UTF-8 unterstützt und es anzeigt. Dann bestimmen Sie, was die Unicode-Sequenz in Java zurückkommt. –

+0

Lassen Sie mich mehr Details geben, die Daten wurden kopiert von Word-Dokument in das HTML-Formular eingefügt, nach der Einreichung werden die Daten in der Datenbank gespeichert. Wenn wir nun das eingereichte Formular erneut aus der Webanwendung öffnen, scheinen die Daten in Ordnung zu sein. Der Punkt ist, dass es im Frontend betrachtet werden kann, aber nicht aus der Datenbank lesen und in ein Excel im Backend schreiben kann. – prabu

0

Unicode ist für: \ uFFFD

keyStrenghts = "1993 � 1995"; 
if(keyStrenghts.contains("\uFFFD")){ 
    keyStrenghts = keyStrenghts.replace("\uFFFD","-"); 
} 

Nun, wenn Sie keyStrenghts drucken erhalten Sie: 1993-1995