Обтекание Hashmap методом некорректного кодирования - PullRequest
0 голосов
/ 23 марта 2020

У меня есть hashmap, который содержит метки для разных языков. Ранее я использовал это, чтобы заполнить мои переведенные объекты переводом непосредственно с карты, которая работала нормально.

     Map<String, String> m = new HashMap<>();
        m.put("sv", "Läs mer");
//...
t.setLabel(m.getOrDefault(language, ""))

Теперь иногда мой ключ может также содержать страну "sv_SE", поэтому я написал для этого метод оболочки:

private static String getLabel(String key) {
    String value = m.get(key);
    if (value == null) {
        int i = key.indexOf("_");
        if (i > 0) {
            value = m.getOrDefault(key.substring(0, i), "");
        } else {
            value = "";
        }
    }
    if (!key.equals("en") && value.equals("")) {
        System.out.println("WARN: Used \"\" label for " + key );
    }
    return value;
}

Однако, когда я начал использовать эту оболочку , не английские sh символы искажаются в файле. json, к которому я позже напишу это содержание:

"L��s mer"

Что здесь происходит? Единственное, что я сделал, это добавил этот метод-обертку.

...