2016-11-24 80 views
0

嘗試向數據庫中插入字符串時,如:
「神奇拍擋07;」
沒有錯誤,但在選擇後讀取爲零。

例:
Ruby - sqlite3,將非ascii字符串插入數據庫

string = "セブンゴースト; 神幻拍擋07;" 
db = SQLite3::Database.new "randomfilename" 
prep = db.prepare "INSERT INTO test_db VALUES (NULL, ?)" 
prep.bind_param 1, string 
prep.execute 
prep2 = db.prepare "SELECT * FROM test_db" 
ret = prep2.execute 
p ret 

這將顯示是這樣的:[[0,零]]
(假設表具有主INT鍵作爲第一值和第二一TEXT)

有可能我的數據庫沒有好的編碼,但如果是這樣的話,我該如何改變它而不會丟失所有東西?

+1

你肯定字符串使用UTF-8編碼? [此答案提供任何建議](http://stackoverflow.com/questions/27356441/sqlite-in-ruby-prepared-statement-cutting-utf-8-input)? – tadman

+0

你確定列的排列順序是你認爲的嗎?你真的應該在你的INSERT中指定這些列:'insert into test_db(column_name1,column_name2)values(null,?)'或者更好,把null全部留出(除非你試圖覆蓋非NULL的默認值) :'insert into test_db(column_name2)values(?)'。你還應該包含'test_db'表的模式。 –

+0

是的,我可以使用puts來顯示字符串內容。 –

回答