bkozhaev
@bkozhaev
Горный инженер

Проблема с кодировкой UTF8 и ANSI при чтении текста с файла?

обнаружил следующую вещь, при чтении с текстового файла сохраненного под UTF8 задание не видела сходство стрингов по заданию "Петров".equals("Петров"); Если поменять кодировку текстового файла на ANSI IDE (Intellij Idea) кириллицу не видит, и выводит каракули, хотя сравнение производит. т.е. если поменять в текстовом файле "Петров" на "Petrov" то сравнение стрингов происходит как нужно.

Искал в инете нигде не смог найти решение именно по этой теме. Не могли бы подсказать в чем дело, заранее спасибо.

Задание

Считаем зарплаты
В метод main первым параметром приходит имя файла.
В этом файле каждая строка имеет следующий вид:
имя значение
где [имя] — String, [значение] — double. [имя] и [значение] разделены пробелом.
Для каждого имени посчитать сумму всех его значений.
Все данные вывести в консоль, предварительно отсортировав в возрастающем порядке по имени.
Закрыть потоки.
Пример входного файла:
Петров 2
Сидоров 6
Иванов 1.35
Петров 3.1

Пример вывода:
Иванов 1.35
Петров 5.1
Сидоров 6.0

Код

public class Solution {
public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(args[0]));
    Map<String, Double> map = new TreeMap<>();
    while (reader.ready()) {
        String[] line = reader.readLine().split(" ");
        if (map.containsKey(line[0])) {
            map.put(line[0], map.get(line[0]) + Double.parseDouble(line[1]));
        } else {
            map.put(line[0], Double.parseDouble(line[1]));
        }
    }
    for (String i : map.keySet()) {
        System.out.println(i + " " + map.get(i));
    }
    reader.close();
}
}
  • Вопрос задан
  • 853 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Adrenal1ne1
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class test {
	public static void main(String[] args){

	try {
		File fileDir = new File("c:\\temp\\test.txt");

		BufferedReader in = new BufferedReader(
		   new InputStreamReader(
                      new FileInputStream(fileDir), "UTF8"));

		String str;

		while ((str = in.readLine()) != null) {
		    System.out.println(str);
		}

                in.close();
	    }
	    catch (UnsupportedEncodingException e)
	    {
			System.out.println(e.getMessage());
	    }
	    catch (IOException e)
	    {
			System.out.println(e.getMessage());
	    }
	    catch (Exception e)
	    {
			System.out.println(e.getMessage());
	    }
	}
}

Пример взят здесь ---> www.mkyong.com/java/how-to-read-utf-8-encoded-data...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы