一. FTP亂碼問題。
1. 問題描述:
在利用FTP服務器進行文件上傳的過程中,當上傳文件的實際文件名是西班牙文或中文的時候,出現了因文件亂碼而無法在FTP服務器上創建文件的問題。
2. 問題調查
環境:
FTP服務器建立在DB服務器所在的機器上。
Web服務器為編碼者自己的機器上。(日文操作系統)
具體情況:
當上傳文件的實際文件名為英文或者日文的時候,文件上傳正常。
當上傳文件的實際文件名是中文或者西班牙文的時候,提示無法創建該文件:(錯誤消息中該文件的名字顯示為亂碼)。
問題可能出現在由客戶端將文件上傳到FTP服務器上之后,文件名無法得到正確的解析,因而報錯。
嘗試一:
通過IE作為FTP客戶端,直接訪問FTP服務器端,成功進入后,試圖將文件名為ÁÚáúÉÜéüÍÑíñÓ¡ó¿.txt的文件直接拷貝到FTP服務器上。
結果,拷貝失敗。
嘗試二:
以上測試,web服務器和FTP服務器分別在不同的機器上。
現將web服務器和FTP服務器都創建在同一臺機器上。
結果,上傳成功,沒有出現亂碼問題。
3. 問題分析
由于編碼者所用的機器與DB服務器所在的機器,其機器所擁有的字符集不一致,造成了在進行文件傳遞的過程中,文件名無法得到正確的解析,因此產生亂碼。
如何確定和修改機器字符集的相關信息,還在調查過程中。
二. DataBase亂碼問題
1. 問題描述
當畫面中的入力項包含西班牙文時,入力到DataBase中的數據為亂碼,導致再次從DataBase中取數據顯示到畫面上時,顯示的數據依然是亂碼。
2. 問題調查
嘗試一:
向數據庫中入力英文,保存并顯示,沒有問題。
嘗試二:
向數據庫中入力日文,保存并顯示,沒有問題。
嘗試二:
向數據庫中入力中文或者西班牙文,保存并顯示,出現亂碼
例如:Ú->U
亂碼的出現可能與數據庫的字符集設置有關。
3. 調查分析
查看數據庫字符集環境:
select * from nls_database_parameters,其來源于props$,是表示數據庫的字符集。
查看客戶端字符集環境:
select * from nls_instance_parameters,其來源于v$parameter
表示客戶端的字符集的設置,可能是參數文件,環境變量或者是注冊表,個人習慣修改注冊表中的NLS_LANG鍵值。
客戶端的字符集要求與服務器一致,才能正確顯示數據庫的非Ascii字符。
字符集要求一致,但是語言設置卻可以不同,語言設置建議用英文。如字符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
歡迎來訪!^.^!
本BLOG僅用于個人學習交流!
目的在于記錄個人成長.
所有文字均屬于個人理解.
如有錯誤,望多多指教!不勝感激!