2016-05-25 1 views
-4

У меня есть строка decoded/encoded/encrypted через длинный процесс (file writing/reading).Почему у меня есть в Java String?

В начале моего «открытого текста» String после декодирования у меня есть два странных символов:

Что это? Почему он там? Как избавиться от него?

Спасибо.

редактировать:

Это, как я пишу файл:

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

Я думаю, что это байт-ордер (спецификация) http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom – Stewart

+2

Это, вероятно, [BOM] (https://en.wikipedia.org/wiki/Byte_order_mark), который был создан где-то в вашей записи файла. Покажите свой код. – Kayaman

+0

Обязательно прочтите это перед тем, как спросить: http://stackoverflow.com/help/how-to-ask – tak3shi

ответ

1

я могу в значительной степени гарантировать, что это является проблемой, кодирующей

  1. Никогда не используйте new String(byte[]) (всегда проходят кодировку)
  2. Никогда не используйте new InputStreamReader(inputStream) (всегда передайте кодировку)
  3. Никогда не используйте String.getBytes() (всегда проходят кодовую)
  4. Убедитесь в том, редактор (например, Notepad) читает, используя ту же кодировку, что файл был написан

Если вы явно не передавать кодовую, по умолчанию будут выбраны. В java это будет отличаться для UNIX/Windows (если вы явно не задали системное свойство file.encoding).

 Смежные вопросы

  • Нет связанных вопросов^_^