最近在專案開發中使用到sqlite資料庫,其中遇到這樣乙個問題,中文,英文顯示正常,但一些特殊的字元顯示亂碼,比如 æçæçæçæçæçæç。其實歸根結底還是字元編碼的問題,先前沒用utf8編碼。下面來看看兩種做法的異同。
一、非utf8編碼
把sql語句儲存在tchar格式
然後sql執行時,使用assicc編碼。
這樣讀取出來的結果,中文是能正常顯示的,不會亂碼,但特殊字元會亂碼。
注: tchartomchar是乙個將tchar編碼轉化為多位元組編碼的方法。
二、utf8編碼
把sql語句儲存在tchar格式,跟上面一樣。
然後sql執行時,使用utf8編碼。
這裡的utf編碼,是指sqlite3_exec函式的第二個引數,也就是sql整個語句,轉變為utf8編碼,而不是把sql語句裡包含的資料列資料轉化為utf8編碼。這是我一直的乙個誤區,現在終於搞明白了。
然後在查詢資料的時候也用utf8編碼。
總之,為了相容所有的字元,直接使用utf8編碼就可,只是utf8不是針對資料表裡的資料,而是針對sql執行語句的。
C 中sqlite中文亂碼問題
前段時間寫資料儲存與恢復用到了sqlite,結果遇到了乙個很讓人糾結的問題,那就是sqlit再對中文進行操作是出項亂碼,寫入是有亂碼,讀出來時也會有亂碼。因為sqlit對應的是utf8編碼,而我們平時的字元傳都是uncoid編碼和ascii編碼,而這有很大的區別,這裡不做解釋,而sqlit的所有操作...
Ubuntu中處理Mysql中文亂碼處理
登陸mysql檢視mysql編碼 mysql u root p show variables like char 如圖,但是我的是已經處理過的,未處理前有兩個是latin1 配置mysql字符集 2.1 vi etc mysql mysql.conf.d mysqld.cnf 在檔案末尾新增 cha...
Air 連線 sqlite 中文亂碼
昨晚寫了一些sqlite用法,今天又實際操作遇到的新問題。修改表名 alter table table name rename to new table name 例如 alter table message2 rename to message 備份資料庫 sqlite backup kun.ba...