Java хранит неправильно испанский sh символов - PullRequest
0 голосов
/ 11 марта 2020

У меня есть приложение Java, которое загружает CSV-файл с некоторым содержимым, которое мне нужно импортировать в базу данных MySQL.

Проблема заключается в том, что для некоторого испанского sh содержимого, такого как - или, приложение возвращает: EL ESPA�OL

База данных по умолчанию для базы данных - latin1 - default collection Я также пытаюсь изменить это на другие, такие как utf8, но результат всегда был одинаковым.

Способ импорта файла:

BufferedReader br = new BufferedReader(
                    new InputStreamReader(new FileInputStream(file)));
            System.out.println("*** Importing file **** " + file);
            try {
                String line;
                int i = 0;
                while ((line = br.readLine()) != null) {
                    final String[] parts = line.split(",");
                    if(parts != null && parts.length > 0 && !parts[0].equalsIgnoreCase("")){
                        System.out.println("Line: " + i++ + " Text: " + line);
...
...

И когда я делаю запрос к бэкэнду, я отправляю следующие заголовки:

accept: application/json
accept-encoding: gzip, deflate, br
accept-language: es-419,es;q=0.9,en;q=0.8
content-type: application/json

1 Ответ

0 голосов
/ 11 марта 2020

Что нужно попробовать:

Восстановить / изменить параметры сортировки таблицы

Параметры сортировки по умолчанию - это просто - значение по умолчанию. В ваших новых таблицах используется значение по умолчанию current , если только вы не указали параметры сортировки.

Если вы не пересоздаете или не исправите существующие таблицы, они будут закодированы в latin1.

Проверьте кодовую страницу JRE

Вы работаете на Windows? Какая у вас кодовая страница по умолчанию для JRE?

Прошло много времени с тех пор, как я коснулся Java, но у меня были ужасные проблемы с многобайтовыми символами, потому что я разрабатывал на Linux и переносил код в Windows и ... внезапно, повсюду в стиле фанк..

В какой-то момент это могло измениться, но на Linux и OSX JRE начинаются с кодировки по умолчанию как UTF-8 .. и с Windows используется системная кодовая страница. Для меня это был cp1252 - явно не международный.

Попробуйте распечатать это системное свойство на консоли, чтобы узнать, происходит ли это с вами.

System.getProperty("file.encoding")

Значение этого можно изменить в запуск с обычным аргументом -D, например,

java -Dfile.encoding="UTF-8" -jar myJar.jar

... или, как говорит @ControlAltDel, всегда указывайте кодировку, если у вас есть опция в потоковом API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...