關於winform本地化問題的思考

      針對我們做的一套winform產品,數據庫用的Access,上午青島客戶過來了,說怎麼保存成功數據後無法查看報表。我們說不可能啊,其他家用戶都沒有出現過這種問題。然後幫他檢查了一下數據,發現裏面的日期格式都錯了,而在我們系統裏運行的時候就沒有問題。早在上一階段的培訓的時候,由於參加培訓的客戶比較多,有四五十家,每個客戶帶的筆記本軟硬件都有差異,就曾經出現過很多類似的問題。

      比如有家客戶在安裝我們打包好的軟件時,出現亂碼問題,安裝好後,同樣是系統出現亂碼。這家客戶以前裝過Microsoft AppLocale。而AppLocal在簡體中文系統裏使用過後,會令某些簡體中文的MSI形式的安裝程序亂碼。剛好,我們打包的程序就是MSI形式的。這個時候有三種解決方法:1.卸載AppLocale即可解決;2.刪除AppLocale安裝目錄下的一個臨時文件:/WINDOWS/AppPatch/AppLoc.tmp(此文件有4字節);3.AppLocale剛安裝好的時候, 是沒有AppLoc.tmp這個文件的. 自己在AppLocale的安裝目錄內, 弄一個0字節AppLoc.tmp文件, 並把它設爲只讀屬性, 以後就不會造成亂碼了!還有的客戶用的是Visita,win7的系統,程序運行的很好,但是在將他的數據庫拷出來放置其他的機器中,總是找不到數據,跟剛安裝好程序時的數據量是一樣的,這類問題應該和Visita,win7的安全性有關,因爲安裝的時候可能是一個虛擬目錄;再有就是有些系統是64位的,要單獨生成用於64位的系統的x86程序;還有一些日期格式本來是yyyy-mm-dd格式的,保存的時候偏偏就成了yyyy/mm/dd了等等問題。這些問題都說明了C/S模式的軟件的侷限性和缺點,也反應出winform程序的一些不足之處。

      而今天上午這個客戶出現的問題,經過檢查後,發現是電腦裏短日期格式設置的有問題。通常情況下,我們電腦控制面板,區域與語言選項中設置的短日期格式爲yyyy-M-d,日期分割符爲-,而這位客戶裏面設置的短日期格式爲yyyy-MM-dd。這樣我們程序裏調用了一個日期轉換字符串函數ToShortDateString(),所以前面兩種情況同樣是一月的數據得出的結果就會一個是2010-1-10,一個是2010-01-10,從而出現了問題。本來Microsoft offices辦公系列軟件中就都會受到本地機器上的日期格式的限制這個規則就是Access 總是使用在 Windows 區域設置中指定的日期分隔符、時間分隔符、財務符號和其他字符,除非您用自定義顯示格式替代它們。有人可能說用Format函數可以解決,但是項目中總還是或多或少的有其他的跟本地PC的設置相關連的。而由於考慮到公司的成本或其他一些綜合性問題,我們不可能組織大量人員再對本地化的問題進行全面解決。所以,這就要求我們在給客戶部署的時候統一他們所有的PC機,以及PC機上一些本地格式的設置,因爲不可能在程序執行的時候,用程序去進行本地PC的設置,雖然有相應的代碼。

      當然,我們也要儘量開發出自己的統一性的代碼,解決這方面的問題,提高代碼的重用性,以免以後不再發生類似的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章