Как записать китайские символы в MySQL с Hibernate? - PullRequest
0 голосов
/ 09 ноября 2018

я делаю веб-приложение с JavaScript. Я использую Java сервлет, который связан с базой данных MySQL с Hibernate. в сервлете есть строка на китайском языке, и когда я пытаюсь записать эту строку в поле mysql, она отображается как "?" в mysql. весь мой проект в netbeans настроен на charset = UTF-8. Я попытался установить параметры сортировки и кодировки в базе данных в utf-8, utf8mb4, big5, и ни один из них не работает. я также попытался изменить свой столбец с varchar на nvarchar, но когда я нажимаю применить (mysql workbench), столбец все еще "varchar".

это мой сервлет

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("application/json");
        String tabla=request.getParameter("tabla");
        //String tabla contains chinese caracters
        String user=request.getParameter("user");
        Configuration myConf = new Configuration();
        myConf.configure("hib/hibernate.cfg.xml");
        StandardServiceRegistry service = new StandardServiceRegistryBuilder().
                applySettings(myConf.getProperties()).build();
        SessionFactory myFactory = myConf.buildSessionFactory(service);
        Session conn = myFactory.openSession();
        Transaction t = conn.beginTransaction();

        List<User>upislista;
        upislista=conn.createQuery("SELECT u FROM User u WHERE useUsername='"+user+"'").list();
        upislista.get(0).setUseKineski(tabla);





        t.commit();
        conn.close();

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Hibernate XML:

<property name="hibernate.connection.CharSet">utf8mb4</property>
<property name="hibernate.connection.characterEncoding">utf8</property>
<property name="hibernate.connection.useUnicode">true</property>

URL-адрес соединения:

db.url=jdbc:mysql://localhost:3306/db_nameuseUnicode=true&character_set_server=utf8mb4

Вышеуказанных изменений мне было достаточно, чтобы перейти с схемы кодировки utf8 на utf8mb4.

В качестве примечания я хотел бы сделать одно пояснение, что UTF-8 - это кодировка символов, а utf8mb4 - это набор символов, который поддерживает MySQL. MySQL utf8mb4 - это расширенный набор MySQL utf8.

Фильтр Spring / Hibernate:

<form accept-charset="UTF-8">

Spring / Hibernate:

<property name="url" value="jdbc:mysql://localhost:3306/miniprojetjee?useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8&characterEncoding=utf-8"/> (or maybe it is =yes)

"Весна":

@RequestMapping(value = "/getRegion2", produces={"application/json; charset=UTF-8"},method = RequestMethod.GET)
0 голосов
/ 09 ноября 2018

配置 知道 你 用 的 哪个 版 的 mysql mys 但是 需要 需要 mysql

character_set_server=utf8mb4

一些 版本 зимуют 能够 正确 配置, 但是 一些 版本 需要 你 手动 配置.

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