Nginx支持(chí)中文文件名方法
我們知道(dào),web服務器處理靜態文(wén)件的請求是非(fēi)常高效的,特別是nginx,它宣稱“支持高(gāo)達 50,000 個並發連接(jiē)數的響應”。
中何讓Nginx支持中文.
首先得讓你的係統有中語語言包:
設置前可以執行:locale 看一下,如(rú)果顯(xiǎn)示是en_US.UTF-8,即是正常,不用按下(xià)麵的步(bù)驟設置。如果顯示其他編碼需要按如下步(bù)驟設置(zhì)。
CentOS
編輯/etc/sysconfig/i18n 文(wén)件,內(nèi)容修改為:(可以使用vi、nano或winscp圖形管理軟(ruǎn)件,依個(gè)人口(kǒu)味選(xuǎn)擇(zé))
LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
保存,重啟係統。
Debian
apt-get install -y locales dpkg-reconfigure locales
執行dpkg-reconfigure locales後會出現如下(xià)對話框:
用向下的方向鍵找到en_US.UTF-8 UTF-8,按(àn)空格選擇,再按回(huí)車鍵。
再按向下鍵(jiàn)選擇en_US.UTF-8,再按回車鍵確(què)認,重啟係統。
Ubuntu
編輯/etc/default/locale文件,修改內容為(沒有的話創建一個):
LANG="en_US.UTF-8" LANGUAGE="en_US:en"
保存,再(zài)執行:
locale-gen en_US en_US.UTF-8
重啟(qǐ)係統。
執行:locale 看一下是否顯(xiǎn)示是en_US.UTF-8,如果報錯,請在本文(wén)反饋(kuì)。按以上步(bù)驟設置(zhì)好(hǎo)後即可支持中文,可以上(shàng)傳中文的文件或中文的目錄。
在nginx.conf文件(jiàn)裏配置的字(zì)符集也是utf-8
server {
listen 80;
server_name test.cn;
root /data;
index index.html index.jsp;
charset utf-8;
……
ay%PM'G+U0
客戶端用的是secureCRT,用的字符集改為utf-8,用uft-8後再用rz上傳文件,在ie下中文可以正常顯示了。
注意:
如果中文文件名是gb2312的需要轉換成utf-8.(注是文件名,不是文件內(nèi)容(róng))。使用convmv轉換,(如果找不(bú)到這個(gè)命令,光(guāng)盤中有這個(gè)包 convmv-1.10-1.el5.noarch.rpm)convmv -fGBK -tUTF8 -r--notesttarget
其中-f是源編碼,-t是目標編碼(mǎ),-r是遞歸處理目錄,–notest是不移動,實際(jì)上對文件進行改名(actually do rename the files),target是目標目錄。其餘參數可以參考man或者-h。
如果是在(zài)沒有(yǒu)更改編碼前(qián)上(shàng)傳的文件,設置好後依然會是(shì)亂碼的,建(jiàn)議重新上傳一下文(wén)件。如果沒有原來文件的備(bèi)份可以(yǐ)使用下麵命令(lìng)進行轉換:for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done 。
其中*.html為要轉換的(de)文(wén)件類型,也可(kě)以(yǐ)更換(huàn)為*.txt,*.rar 主要是看你是什麽文件了,裏麵的GBK為源(yuán)文件的編碼類型,如果不知道源(yuán)文件的編碼類型可以執行:file -bi 文件名 。
如果想在Windows下改的話其實也是可以的Editplus就有批量(liàng)修改文件編碼的功能,其他的軟件可能也有此類功能,可以自行(háng)研究一下。
如(rú)果是目錄的話,目前好像是沒有辦法(fǎ)進行轉(zhuǎn)換。
還有一個問題,如果是html之(zhī)類的(de)網頁文件,如果原來是網頁內容是gb2312或類似的非utf-8的編碼,先要(yào)將網頁裏麵的charset 改為charset=utf-8,再轉換文件編碼,否則網(wǎng)頁還是會亂碼的。
convmv 可以從http://j3e.de/linux/convmv 下(xià)載(zǎi),
wget http://j3e.de/linux/convmv/convmv-1.14.tar.gz
tar -zxvf convmv-1.14.tar.gz
cd convmv-1.14
make clean;
make install;
如:
./convmv -f GB2312 -t UTF-8 -r --nosmart --notest userfiles/*.*
以上表示 userfiles下的所有文件的文件名由GB2312轉換為UTF-8
對於文件內容的字符集轉(zhuǎn)換可(kě)以使用iconv。
關鍵詞:Nginx
閱讀本文後您有什麽感想? 已有 人給出評價!
- 1
- 1
- 1
- 1
- 1
- 1