2012-04-03 6 views
0

У меня есть файлы csv, приложение java и база данных, я читаю csv-файл из моего java-приложения и после некоторой операции, я вставляю файлы по одному в базу данных, но символы, подобные ŠĐŽĆČ, не вставлены правильно. Я устанавливаю базу данных в настройку по умолчанию utf-8. Я понимаю, посредством тестирования, что, когда я устанавливаю файлы с кодировкой ANSI, все работает просто отлично (ŠĐŽĆČ вставлены правильно в базу данных), но когда кодировка является символом UTF-8, они не вставлены правильно. Проблема в том, что файлы, которые я должен вставить в БД, должны быть закодированы в UTF-8. Можете ли вы помочь мне с этой проблемой?Вставка файлов в DB

ответ

0

Трудно быть конкретным без получения более подробной информации, но есть несколько вещей, которые приходят на ум:

1) Если я вас правильно понимаю, вы говорите, что ваш CSV в UTF8? Вы подтвердили правильность предположения? И на связанную заметку, учитывая, что вы думаете, что это UTF-8, как вы загружаете этот файл на Java?

Примечание. Читатели файлов Java используют кодировку по умолчанию для системы. Это не обязательно UTF-8, и вы можете проверить, печатаете ли вы System.getProperty("file.encoding");.

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

FileInputStream fis = new FileInputStream("myfile.txt"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(fis, "UTF-8")); 
... 

2) базы данных сортировки отличается от указания набора символов. (Обратите внимание, что было бы удобно, если бы вы также упоминали клиента базы данных). Сортировка относится к сортировке/упорядочению текста. Обычно вам нужно указать набор символов. Как это сделать, многое зависит от вашей базы данных.

+0

1. Мои CSV-файлы находятся в UTF-8, я загружаю файл стандартным образом: Файл f = новый файл («C: \\ ...»), чем во время цикла i обрабатывает каждую строку. После этого я вставляю файлы в MySql DB (драйвер JDBC). 2. Я прочитал по адресу http://dev.mysql.com/doc/refman/5.0/en/charset-database.html, что: «Если COLLATE Y задан без CHARACTER SET, набор символов, связанный с Y и сортировка Y, used ", поэтому, если я устанавливаю настройку UTF-8 по умолчанию, то набор символов будет UTF-8. – sekulicd

+0

Объект File не является читателем, хотя именно это я и хочу открыть. Я обновил свой ответ, чтобы показать, как это делается для utf-8. – arooaroo

+0

Я понимаю это, но спасибо вам в любом случае. – sekulicd

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