如何讓Nginx支持中文文件名具體設(shè)置步驟
更新時(shí)間:2013年06月18日 15:09:01 作者:
想讓Nginx支持中文文件名首先得讓你的系統(tǒng)有中語(yǔ)語(yǔ)言包,設(shè)置前可以執(zhí)行:locale 看一下,如果顯示是en_US.UTF-8,即是正常,不用按下面的步驟設(shè)置
首先得讓你的系統(tǒng)有中語(yǔ)語(yǔ)言包:
設(shè)置前可以執(zhí)行:locale 看一下,如果顯示是en_US.UTF-8,即是正常,不用按下面的步驟設(shè)置。如果顯示其他編碼需要按如下步驟設(shè)置。
CentOS
編輯/etc/sysconfig/i18n 文件,內(nèi)容修改為:(可以使用vi、nano或winscp圖形管理軟件,依個(gè)人口味選擇)
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
保存,重啟系統(tǒng)。
Debian
apt-get install -y locales
dpkg-reconfigure locales
執(zhí)行dpkg-reconfigure locales后會(huì)出現(xiàn)如下對(duì)話框:
用向下的方向鍵找到en_US.UTF-8 UTF-8,按空格選擇,再按回車(chē)鍵。
再按向下鍵選擇en_US.UTF-8,再按回車(chē)鍵確認(rèn),重啟系統(tǒng)。
Ubuntu
編輯/etc/default/locale文件,修改內(nèi)容為(沒(méi)有的話創(chuàng)建一個(gè)):
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
保存,再執(zhí)行:
locale-gen en_US en_US.UTF-8
重啟系統(tǒng)。
執(zhí)行:locale 看一下是否顯示是en_US.UTF-8,如果報(bào)錯(cuò),請(qǐng)?jiān)诒疚姆答仭0匆陨喜襟E設(shè)置好后即可支持中文,可以上傳中文的文件或中文的目錄。
在nginx.conf文件里配置的字符集也是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的需要轉(zhuǎn)換成utf-8.(注是文件名,不是文件內(nèi)容)。使用convmv轉(zhuǎn)換,(如果找不到這個(gè)命令,光盤(pán)中有這個(gè)包 convmv-1.10-1.el5.noarch.rpm)convmv -fGBK -tUTF8 -r--notesttarget
其中-f是源編碼,-t是目標(biāo)編碼,-r是遞歸處理目錄,–notest是不移動(dòng),實(shí)際上對(duì)文件進(jìn)行改名(actually do rename the files),target是目標(biāo)目錄。其余參數(shù)可以參考man或者-h。
如果是在沒(méi)有更改編碼前上傳的文件,設(shè)置好后依然會(huì)是亂碼的,建議重新上傳一下文件。如果沒(méi)有原來(lái)文件的備份可以使用下面命令進(jìn)行轉(zhuǎn)換:for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done 。
其中*.html為要轉(zhuǎn)換的文件類(lèi)型,也可以更換為*.txt,*.rar 主要是看你是什么文件了,里面的GBK為源文件的編碼類(lèi)型,如果不知道源文件的編碼類(lèi)型可以執(zhí)行:file -bi 文件名 。
如果想在Windows下改的話其實(shí)也是可以的Editplus就有批量修改文件編碼的功能,其他的軟件可能也有此類(lèi)功能,可以自行研究一下。
如果是目錄的話,目前好像是沒(méi)有辦法進(jìn)行轉(zhuǎn)換。
還有一個(gè)問(wèn)題,如果是html之類(lèi)的網(wǎng)頁(yè)文件,如果原來(lái)是網(wǎng)頁(yè)內(nèi)容是gb2312或類(lèi)似的非utf-8的編碼,先要將網(wǎng)頁(yè)里面的charset 改為charset=utf-8,再轉(zhuǎn)換文件編碼,否則網(wǎng)頁(yè)還是會(huì)亂碼的。
convmv 可以從http://j3e.de/linux/convmv 下載,
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轉(zhuǎn)換為UTF-8
對(duì)于文件內(nèi)容的字符集轉(zhuǎn)換可以使用iconv
設(shè)置前可以執(zhí)行:locale 看一下,如果顯示是en_US.UTF-8,即是正常,不用按下面的步驟設(shè)置。如果顯示其他編碼需要按如下步驟設(shè)置。
CentOS
編輯/etc/sysconfig/i18n 文件,內(nèi)容修改為:(可以使用vi、nano或winscp圖形管理軟件,依個(gè)人口味選擇)
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
保存,重啟系統(tǒng)。
Debian
apt-get install -y locales
dpkg-reconfigure locales
執(zhí)行dpkg-reconfigure locales后會(huì)出現(xiàn)如下對(duì)話框:
用向下的方向鍵找到en_US.UTF-8 UTF-8,按空格選擇,再按回車(chē)鍵。
再按向下鍵選擇en_US.UTF-8,再按回車(chē)鍵確認(rèn),重啟系統(tǒng)。
Ubuntu
編輯/etc/default/locale文件,修改內(nèi)容為(沒(méi)有的話創(chuàng)建一個(gè)):
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
保存,再執(zhí)行:
locale-gen en_US en_US.UTF-8
重啟系統(tǒng)。
執(zhí)行:locale 看一下是否顯示是en_US.UTF-8,如果報(bào)錯(cuò),請(qǐng)?jiān)诒疚姆答仭0匆陨喜襟E設(shè)置好后即可支持中文,可以上傳中文的文件或中文的目錄。
在nginx.conf文件里配置的字符集也是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的需要轉(zhuǎn)換成utf-8.(注是文件名,不是文件內(nèi)容)。使用convmv轉(zhuǎn)換,(如果找不到這個(gè)命令,光盤(pán)中有這個(gè)包 convmv-1.10-1.el5.noarch.rpm)convmv -fGBK -tUTF8 -r--notesttarget
其中-f是源編碼,-t是目標(biāo)編碼,-r是遞歸處理目錄,–notest是不移動(dòng),實(shí)際上對(duì)文件進(jìn)行改名(actually do rename the files),target是目標(biāo)目錄。其余參數(shù)可以參考man或者-h。
如果是在沒(méi)有更改編碼前上傳的文件,設(shè)置好后依然會(huì)是亂碼的,建議重新上傳一下文件。如果沒(méi)有原來(lái)文件的備份可以使用下面命令進(jìn)行轉(zhuǎn)換:for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done 。
其中*.html為要轉(zhuǎn)換的文件類(lèi)型,也可以更換為*.txt,*.rar 主要是看你是什么文件了,里面的GBK為源文件的編碼類(lèi)型,如果不知道源文件的編碼類(lèi)型可以執(zhí)行:file -bi 文件名 。
如果想在Windows下改的話其實(shí)也是可以的Editplus就有批量修改文件編碼的功能,其他的軟件可能也有此類(lèi)功能,可以自行研究一下。
如果是目錄的話,目前好像是沒(méi)有辦法進(jìn)行轉(zhuǎn)換。
還有一個(gè)問(wèn)題,如果是html之類(lèi)的網(wǎng)頁(yè)文件,如果原來(lái)是網(wǎng)頁(yè)內(nèi)容是gb2312或類(lèi)似的非utf-8的編碼,先要將網(wǎng)頁(yè)里面的charset 改為charset=utf-8,再轉(zhuǎn)換文件編碼,否則網(wǎng)頁(yè)還是會(huì)亂碼的。
convmv 可以從http://j3e.de/linux/convmv 下載,
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轉(zhuǎn)換為UTF-8
對(duì)于文件內(nèi)容的字符集轉(zhuǎn)換可以使用iconv
相關(guān)文章
使用Nginx部署Vue項(xiàng)目全過(guò)程及踩坑記錄
這篇文章主要介紹了使用Nginx部署Vue項(xiàng)目全過(guò)程及踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Windows環(huán)境實(shí)現(xiàn)Nginx配置及開(kāi)機(jī)自啟動(dòng)
本文主要介紹了Windows環(huán)境實(shí)現(xiàn)Nginx配置及開(kāi)機(jī)自啟動(dòng),通過(guò)兩種方式可以實(shí)現(xiàn)nginx的開(kāi)機(jī)自啟動(dòng),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03詳解Nginx的超時(shí)keeplive_timeout配置步驟
Nginx 處理的每個(gè)請(qǐng)求均有相應(yīng)的超時(shí)設(shè)置,本文主要介紹了Nginx的超時(shí)keeplive_timeout配置步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05nginx location優(yōu)先級(jí)的深入講解
這篇文章主要給大家介紹了關(guān)于nginx location優(yōu)先級(jí)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Nginx內(nèi)容緩存以及常見(jiàn)參數(shù)配置詳析
這篇文章主要給大家介紹了關(guān)于Nginx內(nèi)容緩存以及常見(jiàn)參數(shù)配置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05nginx 基本配置與參數(shù)說(shuō)明詳細(xì)介紹
這篇文章主要介紹了nginx 基本配置與參數(shù)說(shuō)明詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10