Java Unicode проблема - PullRequest
       8

Java Unicode проблема

0 голосов
/ 07 октября 2009

Мой вопрос: что не так со следующим кодом? Я пытаюсь с помощью j2ee прочитать какой-нибудь юникод из базы данных, и некоторые символы возвращаются в виде известного знака вопроса.

попытка { Class.forName ( "com.mysql.jdbc.Driver"); String connectionUrl = "jdbc: mysql: // localhost / hortimart?" + "пользователь = WebServices и пароль = stipjeservers"; Соединение con = DriverManager.getConnection (connectionUrl);

        Statement stmt = null;
        ResultSet rs = null;
        String SQL = "SELECT FirstName,LastName FROM users";

        stmt = con.createStatement();
        rs = stmt.executeQuery(SQL);

        while (rs.next())
        {

            byte[] firstNameBytes = rs.getBytes(1);
            String FirstName =new String(firstNameBytes,"UTF-8");
            byte [] lastNameBytes = rs.getBytes(2);
            String LastName =new String(lastNameBytes,"UTF-8");
            System.out.println(FirstName+" "+LastName);

        }

    }
    catch (SQLException e)
    {
        System.out.println("SQL Exception: "+ e.toString());
    }
    catch (ClassNotFoundException cE)
    {
        System.out.println("Class Not Found Exception: "+ cE.toString());
    }

Теперь я попробовал этот код с j2Se, и он работает. Так это j2EE или я что-то пропустил в своем коде?

Спасибо

Ответы [ 4 ]

2 голосов
/ 07 октября 2009

Скорее всего, ваша консоль неправильно настроена. Вы исследовали байты результата, чтобы увидеть, является ли это UTF-8?

0 голосов
/ 07 октября 2009

Знаете ли вы , были ли строки закодированы в UTF-8 (Unicode включает в себя множество кодировок, UTF-8 - только одна из них). Вы пытались использовать простой rs.getString(1)?

0 голосов
/ 07 октября 2009

Может случиться так, что либо i) у вас есть данные в базе данных, которые не являются юникодом (как определяются ваши таблицы?), Либо ii) что ваш драйвер не поддерживает юникод.

РЕДАКТИРОВАТЬ : Вы пытались установить useUnicode и CharacterEncoding в строке подключения?

...useUnicode=true&characterEncoding=utf8
0 голосов
/ 07 октября 2009

попробуйте добавить символEncoding = utf-8 в URL вашего соединения. то есть:

String connectionUrl = "jdbc:mysql://localhost/hortimart?" + "user=webservices&password=stipjeservers&characterEncoding=utf-8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...