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