2017-09-28 15 views
0

でUTF-8文字を含む、私は次の関数を使用してMySQLデータベースにこのクエリを送信していたときにDBIがクエリの問題を取得する:文字引数korisnikが非UTF-8文字が含まれている場合文字列がR

loadDataBudget <- function(korisnik, razinaLabel) { 
    lapply(dbListConnections(dbDriver(drv = "MySQL")), dbDisconnect) 
    # Connect to the database 
    db <- dbConnect(MySQL(), dbname = databaseBudget, host = options()$mysql$host, 
        port = options()$mysql$port, user = options()$mysql$user, 
        password = options()$mysql$password, encoding = "utf8") 
    # Construct the fetching query 
    query <- sprintf("SELECT positions, x201501, x201502, x201503, x201504, x201505, x201506, x201507, x201508, x201509, 
        x201510, x201511, x201512 FROM %s WHERE naziv = '%s' AND razina = '%d'", 
        tableBudget, 
        korisnik, 
        razinaLabel) 
    # Submit the fetch query and disconnect 
    data <- dbGetQuery(db, query) 
    dbDisconnect(db) 
    data 
} 

機能がうまく機能。しかし、クロアチア語のUTF-8文字が含まれている場合は空のテーブルが返されます。私は、MySQLデータベースでutf8_general_ciとutf8_croatian_ciという2つの照合を試みました。

私もクエリの前にutf-8という名前を設定しようとしましたが、それは役に立ちませんでした。

答えて

1

アクセント付きクロアチア語の文字が必要な場合は、テキストが切り捨てられますか?

  • 保存するバイトはutf8mb4としてエンコードされません。これを修正してください。
  • また、読み取り中の接続がUTF-8であることを確認してください。これは十分ではない場合

は、必要があるかもしれません

Trouble with UTF-8 characters; what I see is not what I stored

Rに "TRUNCATE" とデバッグのヒントを参照してください。

Tool -> Global Options -> Code -> Saving and put UTF-8 
rs <- dbSendQuery(con, 'set character set "utf8"') 
rs <- dbSendQuery(con, 'SET NAMES utf8') 
+0

残念ながら、これは役立ちません。私はこれまでにこれを試しました。 – Mislav

+0

「セレクトヘックス...」とは何ですか? (このデバッグ手法の詳細については、リンクを参照してください。) –

+0

"読んでいる間に接続がUTF-8であることを確認する"ということをまったく意味します。私はこれをどのようにチェックすべきですか?私はターゲット列の連合をutf8mb4_croatian_ciに変更し、あなたのコードを組み込みましたが、何も起こっていません。 – Mislav