3

我有一个带有两个 UTF-8 表的 Mysql 数据库。我们称它们为源和目标。

使用 clojure.java.jdbc 我成功地从 Source 中检索了一个字段,该字段包含“ă”符号。在尝试将该字符串保存在目标中时,我找到了一个“?” 在'ă'符号应该在的地方。

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

(jdbc/update-or-insert-values
 "destination"
 ["lexeme = ?" word]
 record)

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

4

1 回答 1

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"}))
于 2013-03-22T21:01:52.980 回答