INSERT INTO words (word, meaning) VALUES ('Цветок', 'Flower')
Когда я выполняю этот оператор SQL из клиента SQL (DbVisualizer), значения в таблице выглядят точно так же, как вы видите их здесь в операторе, т.е. Цветок
не кодируется.
Когда я выполню это из PHP поверх Tomcat 8 / Java версия «1.8.0_101» (Quercus 4.0.39) , значения в таблице закодированы точно так же, как если бы я запускал PHP UrlEncode () на них. Так Flower
не изменился, но Цветок
есть — теперь это выглядит в таблице через клиент SQL как ЦвеÑок
Чем отличается запуск оператора SQL от клиента или от PHP?
Как я могу вставить эти данные из PHP, чтобы они были сохранены в базе данных без изменений?
ОБНОВИТЬ
Вот мой ресурс Tomcat context.xml HSQLDB:
<Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource"maxActive="100" maxIdle="30" maxWait="10000"username="me" password="kjsfhsjhfsd" driverClassName="org.hsqldb.jdbc.JDBCDriver"url="jdbc:hsqldb:hsql://localhost:9001/mydb?characterEncoding=UTF-8"/>
characterEncoding=UTF-8
на самом деле специфичен для MySql (поэтому его использование нарушает этот ресурс!). Что такое эквивалент HSQLDB? Я не мог найти…
Я также пытался установить php.ini
с unicode.semantics=on
как объяснено здесь:
http://www.caucho.com/resin-3.1/doc/quercus.xtp#php.ini
http://www.caucho.com/resin-3.1/doc/quercus.xtp#Internationalization-16-bitunicode
http://www.caucho.com/resin-3.1/doc/quercus.xtp#encoding
Тем не менее, он не сделал никаких изменений …
Задача ещё не решена.
Других решений пока нет …