0
INSERT INTO words (word, meaning) VALUES ('Цветок', 'Flower')

当我从 SQL 客户端 (DbVisualizer) 执行此 SQL 语句时,表中的值与您在语句中看到的完全一样,即Цветок未编码。

当我通过 Tomcat 8 / Java 版本 "1.8.0_101" (Quercus 4.0.39) 从 PHP执行它时,表中的值被完全编码,就像我将在它们上运行 PHP urlencode()一样。所以Flower没有改变,但是Цветок- 现在它通过 SQL 客户端在表中查找,如ЦвеÑок

为什么从客户端运行 SQL 语句或从 PHP 运行 SQL 语句有区别?

如何从 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.iniwith 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

然而,它并没有做出任何改变……

4

0 回答 0