国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql亂碼問題分析與解決方法

2024-07-24 13:01:36
字體:
來源:轉載
供稿:網友
開發過程中總避免不了遇到惡心的亂碼,或者由亂碼引發的一系列問題。出現亂碼是字符集的原因一般而言和邏輯沒有太大關系,也就是說整個系統大的方向沒有問題,小的地方出現了漏洞,進而導致程序不能正常運行,所以說出現亂碼是一件令人非常很惡心的事情。這里簡要介紹一下自己遇到的亂碼問題和解決問題的過程中的想法以及大致的操作,我們要學會的是如何分析問題進而解決問題,而不僅僅是照著網上的操作去一次次的解決眼前的困難,“魚”與“漁”的區別就在于此。

交代背景:
要實現的功能很簡單,用dom4J讀取XML文件然后借助Spring以及Hibernate將數據寫入到MySql數據庫(多表)中,當然整個過程是由Spring控制事務一次性完成,有異常進行回滾。
現象:在往數據庫里寫數據寫到一半的時候報錯,大致的錯誤信息是:記錄不是唯一。
分析和操作:
檢查了一遍自己的代碼,用Spring當中的HibernateTemplete保存數據,應該沒有問題。

再次觀察現象:好像是外鍵約束的問題,因為每當插入到帶有外鍵的表的時候數據死活錄入不進去。
分析和操作:
既然是外鍵表的問題,首先應該確定外鍵表中的內容是什么,于是手動改數據庫隔離等級查看數據,果然里面是亂碼!

問題:亂碼是怎么進入數據庫的?
分析和操作:
要么讀取xml的時候就是亂碼,要么在往數據庫里寫的時候變成亂碼。再次斷點調試測試在程序中是否亂碼。

現象:在eclipse當中打印出來信息沒有出現亂碼問題
分析與操作:
這就說明在程序中一切沒有問題,是數據庫的問題。于是先改數據庫鏈接字符串指定編碼,再改數據庫的編碼,再次斷點調試。

現象:數據庫中依然是亂碼,但是亂碼的形式換了,之前全是“?”現在是一些亂七八糟的文字。
分析和操作:
很明顯上面一系列修改編碼格式的操作起作用了,只是沒有修改對而已。再次檢查各項的編碼格式,沒有發現問題
問題一度陷入僵局……
尋求幫助:秋提出別用命令窗口了,太麻煩了,用第三方客戶端吧,于是換用第三方客戶端,奇怪的是客戶端顯示沒有問題!
分析和操作:
客戶端沒有問題命令窗口有問題,那就說明數據庫里已經不是亂碼,亂碼可能是命令行顯示的問題。設置命令行顯示字符,果然顯示正常!再次測試數據導入----一切OK。

思考與總結:
現象:其實在第一次修改完各項編碼的時候這個問題已經算是解決了,但是由于當時自己斷點調試的時候沒有讓程序執行完所以一直認為數據庫中依然是亂碼。
總結:
應該在每次調試的時候讓程序跑完,將錯誤的上下文環境模擬出來,而不是只關注錯誤本身。

現象:在這里涉及到編碼的地方有XML的編碼、dom4j的讀取編碼、數據庫編碼、數據庫連接字符串指定編碼、命令行窗口顯示編碼。這其中哪個沒有注意到問題也解決不了(這里自己沒有意識到最后一個)。
總結:
全局觀的意思是把握每個控制變量,從開始到結束,有意識的跳出環境來做假設。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北流市| 三江| 皋兰县| 章丘市| 四川省| 恭城| 天峻县| 兴业县| 清远市| 冷水江市| 颍上县| 凤凰县| 望江县| 渝北区| 保德县| 吴江市| 田林县| 兰溪市| 梁山县| 涪陵区| 龙陵县| 合水县| 蛟河市| 武陟县| 凤阳县| 邵阳县| 南皮县| 无棣县| 屯昌县| 鲜城| 星座| 龙江县| 巴林左旗| 莱阳市| 和平县| 城市| 闽侯县| 正安县| 瑞安市| 永定县| 原阳县|