分享一個解決MySQL寫入中文亂碼的方法 之前有發帖請教過如何解決MySQL寫入中文亂碼的問題。但沒人會,或者是會的人不想回答。搜索網上的答案並嘗試很多次無效,所以當時就因為這個亂碼問題擱淺了一個軟體很多日子。 直到昨天又一次互聯網搜索,嘗試很多次後,終於解決了亂碼問題,再一鼓作氣完成了軟體的全部功 ...
分享一個解決MySQL寫入中文亂碼的方法
之前有發帖請教過如何解決MySQL寫入中文亂碼的問題。但沒人會,或者是會的人不想回答。搜索網上的答案並嘗試很多次無效,所以當時就因為這個亂碼問題擱淺了一個軟體很多日子。
直到昨天又一次互聯網搜索,嘗試很多次後,終於解決了亂碼問題,再一鼓作氣完成了軟體的全部功能。
喜悅之餘,也想到肯定有很多人被這個問題所困擾,他們的心情我是理解的。所以我決定分享下這個方法。
1、首先在連接MySQL之後,執行SQL語句 (連接句柄, “set names 'GBK'”),這樣才能讀取庫名、表名、記錄數據時顯示中文。當然也可以 執行SQL語句 (連接句柄, “set names 'utf8'”),然後讀取數據出來後,轉換UTF8編碼為ANSI編碼即可(轉換模塊、源碼多了去,自己找)。 2、原本以為第一條執行後能輸出中文了,輸入中文應該沒問題。但就是輸入中文有問題,原因就在,使用MySQL支持庫的創建庫和創建表命令創建後的庫表,預設都是拉丁字元集(當然是我這裡發現的情況,不是所有情況都這樣)。所以要這樣: 創建庫之後,執行SQL語句 (連接句柄, “ALTER DATABASE `庫名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;”) 創建表之後,執行SQL語句 (連接句柄, “ALTER TABLE `表名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;”) 這樣就可以正常輸入中文了。 3、由於寫入記錄時使用單引號包括數據,所以數據中如果有單引號就必須轉義,刪除記錄的條件語句也要求轉義。轉義的處理方法: 欄位值 = 子文本替換 (子文本替換 (子文本替換 (欄位值, “\'”, “\|”, , , 真), “'”, “\'”, , , 真), “\|”, “\\\'”, , , 真)