Спящий юникод от netbeans;Почему сохраняется в БД как "?????" - PullRequest
0 голосов
/ 08 декабря 2011

У меня такая проблема, как в этом посте .Я использую NetBeans 7.01 IDE и MySQL 5.2.35.Я использовал эти уловки, но не эффективно: я добавил эти свойства в свой конфигурационный файл:

<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>

, а также:

jdbc: mysql: // localhost: 3307 / MY_DB_NAME?useUnicode = true & characterEncoding = UTF-8

но не эффективно!

также я пробовал этот код Java, чтобы сделать строковый Unicode Java, а также бесполезно:

    public static String toUTF8(String isoString) {
    String utf8String = null;
    if (null != isoString && !isoString.equals("")) {
        try {
            byte[] stringBytesISO = isoString.getBytes("ISO-8859-1");
            utf8String = new String(stringBytesISO, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            System.out.println("UnsupportedEncodingException is: " + e.getMessage());
            utf8String = isoString;
        }
    } else {
        utf8String = isoString;
    }
    return utf8String;
}

Кто-нибудь может мне помочь?!

Ответы [ 5 ]

2 голосов
/ 08 декабря 2011

Строки внутри JVM уже правильно закодированы.Нет необходимости перекодировать их.

Просто передайте экземпляр String методу setString() в PreparedStatement, и все будет в порядке (при условии, что ваша база данных использует использует UTF8)

Кстати: string.lenght() == 0намного быстрее чем "".equals(string)

0 голосов
/ 19 декабря 2013

У меня тоже была такая проблема.Я использовал страницы .jsp и помог мне добавить следующую строку в каждый файл .jsp:

<%@ page pageEncoding="utf-8" %>
0 голосов
/ 08 декабря 2011

Я столкнулся с той же проблемой в Oracle, когда сохранял данные. Но исправил это следующим образом.

  1. Сначала я узнал, что мне нужно использовать Universal version of Oracle. Итак, я переустановил мой оракул с универсальной версией. (уточняйте в случае с MySql)

  2. Затем я преобразовал все строки, которые есть в UTF-8, в escape-коды Строки, используя native2ascii инструмент Java.

  3. Тогда все работает нормально, так как оно правильно отображается в БД и а также в режиме просмотра (браузер).

Note: убедитесь, что ваш языковой пакет установлен в вашей ОС.

Надеюсь, что этот ввод может помочь вам

0 голосов
/ 08 декабря 2011

Вам необходимо установить параметры сортировки БД и таблицы в * utf8_general_ci *. Вы можете найти здесь как это сделать и убедиться, что ваша программа просмотра базы данных поддерживает кодировку utf-8, в противном случае вы увидите символ юникода как ???????

0 голосов
/ 08 декабря 2011

проверьте набор символов вашей базы данных также на UTF-8: http://dev.mysql.com/doc/refman/5.0/en/charset-database.html

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