Как исправить кодировку при чтении .properties файла?

157
23 апреля 2019, 23:20

Есть класс который подтягиват данные из файла css-selector.properties, но кириллические символы лоомаются превращаясь в иероглифы. Как это исправить?

@Slf4j
@Component
public class SelectorsStore implements Store<String, String> {
    @NotNull
    private Map<String, String> selectors = Maps.newHashMap();
    @Override
    public String get(@NotNull String key) {
        return selectors.get(key);
    }
    @PostConstruct
    private void fetchProp() {
        String path = format("%s/css-selector.properties", new File(".").getAbsolutePath());
        Properties properties = new Properties();
        try (FileInputStream in = new FileInputStream(path)) {
            properties.load(in);
            properties.stringPropertyNames().forEach(name -> selectors.put(name, properties.getProperty(name)));
        } catch (IOException e) {
            log.error("File css-selector.properties not found", e);
        }
    }
}

Если у Spring есть способ сделать это короче, на подобии @Value, только вытянуть сразу всю Map<String, String> разом, то буду признателен за подсказку.

Answer 1

Property-файлы могут содержать только символы латиницы. Поэтому любые другие символы должны быть преобразованы в формат Unicode Escape Sequences. Для этого файл с кириллицей надо перед использованием обработать с помощью утилиты native2ascii.

Answer 2

Если вам нужна кириллица в properties файлах, рекомендую вам рассмотреть вопрос о переходе на XML формат, см. java.util.Properties. Обычные properties файлы, как уже ответили выше, кириллицу содержать не должны... не по ГОСТУ :)

READ ALSO
Вылетает org.hibernate.LazyInitializationException

Вылетает org.hibernate.LazyInitializationException

Модель мини магазина

245
AdMob показ рекламы в авиарежиме

AdMob показ рекламы в авиарежиме

Мне показали приложение в App Store в котором реклама показывается даже в авиарежиме, причём каждый раз разная (речь о Rewarded Video и Interstitial)Как это...

165
Исключение работает не верно [дубликат]

Исключение работает не верно [дубликат]

На данный вопрос уже ответили:

139