2016-05-25 7 views
-4

Ich habe eine Zeichenfolge, die decoded/encoded/encrypted durch einen langen Prozess ist (file writing/reading beteiligt).Warum habe ich in Java String?

Am Anfang meines „Klartext“ String nach der Decodierung habe ich zwei seltsame Zeichen:

Was ist das? Warum ist es da? Wie man es los wird?

Danke.

edit:

Dies ist, wie ich eine Datei schreiben: kann ziemlich garantieren

try { 
    FileOutputStream out = new FileOutputStream(filePath); 
    out.write(string.getBytes()); 
    out.close(); 
} catch (Exception e) { 
    //handle exception 
} 
+0

Ich denke, das ist ein Byte-Reihenfolge Mark (BOM) http://StackOverflow.com/Questions/2223882/Whats-Different-Betwish-utf-8-and-utf-8-without-Bom – Stewart

+2

Es ist wahrscheinlich ein [BOM] (https://en.wikipedia.org/wiki/Byte_order_mark), das irgendwo in deiner Datei geschrieben wurde. Zeigen Sie Ihren Code. – Kayaman

+0

Stellen Sie sicher, dies zu lesen, bevor Sie fragen: http://StackOverflow.com/Help/how-to-ask – tak3shi

Antwort

1

ich, dass es eine Codierung Problem

  1. Niemals new String(byte[]) (immer ein charset Pass)
  2. Niemals new InputStreamReader(inputStream) verwenden (immer einen Zeichensatz übergeben)
  3. Nie String.getBytes() verwenden (immer ein charset Pass)
  4. Sicherstellen, dass der Editor (zB Notepad) liest die gleiche Codierung wie die Datei

geschrieben wurde Wenn Sie nicht explizit einen charset passieren kann, ein Standard wird gewählt. In Java wird dies für UNIX/Windows anders sein (außer Sie setzen die Systemeigenschaft file.encoding explizit).

Verwandte Themen