Jdbc(mysql)unicode行为

Tud*_*scu 3 mysql jdbc clojure utf-8

我有一个带有两个UTF-8表的Mysql数据库.我们称之为源和目的地.

使用clojure.java.jdbc我成功地从Source中检索了一个字段,该字段包含'ă'符号.在尝试将该字符串保存在Destination中时,我发现'?' 在'ă'符号所在的地方.

这是实际保存记录的序列:

(jdbc/update-or-insert-values
 "destination"
 ["lexeme = ?" word]
 record)
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么会这样?

Esa*_*ija 5

如果您使用了Wiki中的示例,那么缺少一个显而易见的事情就是设置连接编码.如果你没有发现这里是未经测试的编码示例:

(use 'clojure.java.jdbc)

(let [db-host "localhost"
      db-port 3306
      db-name "a_database"]

  (def db {:classname "com.mysql.jdbc.Driver" ; must be in classpath
           :subprotocol "mysql"
           :subname (str "//" db-host ":" db-port "/" db-name "?characterEncoding=UTF-8")
           ; Any additional keys are passed to the driver
           ; as driver-specific properties.
           :user "a_user"
           :password "secret"}))
Run Code Online (Sandbox Code Playgroud)