我有一个带有两个 UTF-8 表的 Mysql 数据库。我们称它们为源和目标。
使用 clojure.java.jdbc 我成功地从 Source 中检索了一个字段,该字段包含“ă”符号。在尝试将该字符串保存在目标中时,我找到了一个“?” 在'ă'符号应该在的地方。
这是实际保存记录的序列:
(jdbc/update-or-insert-values
"destination"
["lexeme = ?" word]
record)
有人知道为什么会这样吗?
如果您使用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"}))