Я создал веб-службу, используя NetBeans 6.9.1, работающую в Mac OS на сервере приложений Glassfish 3.0.1. Этот метод принимает строковый аргумент китайских иероглифов. Он вставляет строку в таблицу базы данных MySQL. При пошаговом выполнении кода сервера в режиме отладки символы поступают правильно. Часы отладчика показывают параметр запроса ниже с китайскими иероглифами.
Query query = entityManager.createNativeQuery(QueryInsertWord);
query.setParameter(1, word);
query.executeUpdate();
ОДНАКО после вставки столбец таблицы базы данных имеет ??? вместо китайских иероглифов. Я предполагаю, что база данных MySQL совместима с UTF-8, потому что я могу вручную вырезать и вставлять китайские символы в тот же самый столбец с помощью инструмента управления базой данных Navicat.
ПУ выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="MyPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>javaapplication1.Registration</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myDatabase"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
</properties>
</persistence-unit>
</persistence>
Я настроил ВСЕ пулы соединений Glassfish jdbc с дополнительными свойствами useUnicode=true
и characterEncoding=utf8
.
Помогите пожалуйста мне.