Java: сохранить данные из файла UTF-8 в Sql Server 2008 - PullRequest
1 голос
/ 14 сентября 2011

Мне не удалось сохранить данные с акцентами из файла utf8 в моей таблице SQL Server 2008 - сортировка SQL = SQL_Latin1_General_CP1_CI_AS - (когда я выполняю System.out.print моего оператора вставки: акценты в порядке).

Вот шаги, которые я делаю:

1) Преобразовать файл в строку:

        File f = new File(file);
        byte[] buffer = new byte[(int) f.length()];
        in = new DataInputStream(new FileInputStream(f));
        in.readFully(buffer);
        result = new String(buffer);

2) Выполнить вставку:

            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Properties properties = new Properties();
            properties.put("charSet", "ISO-8859-1");
            properties.put("user", user);
            properties.put("password", password);
            connection = DriverManager.getConnection("jdbc:jtds:sqlserver://" + serverName + ":1433;DatabaseName=" + dbName + "", properties);

            statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            statement.executeUpdate(sqlInsert, Statement.RETURN_GENERATED_KEYS);

Спасибо за вашу помощь

Ответы [ 3 ]

1 голос
/ 14 сентября 2011

Чтобы преобразовать символьные данные UTF-8 в строки UTF-16, предоставьте правильную кодировку для конструктора String .

new String(bytes, Charset.forName("UTF-8"));
0 голосов
/ 08 декабря 2017

Независимо от того, какое сопоставление вы используете, важно использовать «N» перед строками данных Unicode.

Как:

insert into table(somecolumn) values(N'unicode string')
0 голосов
/ 14 сентября 2011

Вместо установки charset на ISO-8859-1, установите charset на UTF-8. Кодировка ISO-8859-1 не принимает все символы.

Спасибо.

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