3

2 つの UTF-8 テーブルを持つ Mysql データベースがあります。それらをソースと宛先と呼びましょう。

clojure.java.jdbc を使用して、「ă」記号を含むフィールドを Source から正常に取得しました。その文字列を宛先に保存しようとすると、「?」が見つかります。「ă」記号があったはずの場所に。

これは、実際にレコードを保存するシーケンスです。

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

なぜこれが起こっているのか、誰かが考えを持っていますか?

4

1 に答える 1

5

Wikiの例を使用した場合、そこに欠けている明らかなことの 1 つは、接続エンコーディングの設定です。わからない場合は、エンコードを使用したテストされていない例を次に示します。

(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 に答える