ubuntu伺服器下中文路徑資源無法找到的一些問題

2021-08-09 21:47:55 字數 1374 閱讀 9021

關於tomcat作為伺服器 url訪問的一些問題

由於tomcat對中文支援不是很好,所以在某些情況下導致url無法訪問或者找不到路徑的問題,一般主要存在兩個問題:

1.含有中文的url無法訪問

上傳乙個資源到伺服器後,通過連線無法進行訪問,進行幾次嘗試之後,發現如果url包含中文字元則無法訪問,而純英文本元的url則可以訪問。網上查資料發現是tomcat預設的配置不支援中文路徑訪問,因為通過鏈結進行訪問時採用的是get協議,而預設的get協議是採用iso-8859-1對url進行編碼的,而這個字符集不支援中文雙位元組資訊。

在server.xml檔案中新增乙個名為uriencoding的屬性,它定義了對http請求中的get方法傳過來的url進行編碼的採用的方案。

在tomcat安裝目錄下找到server.xml檔案,找到

在裡面加入uriencoding=」utf-8」 這個屬性,儲存,然後重啟tomcat即可。

2.含有空格的url無法訪問

例如:

string urlstring="http:10.0.0.2:8080/musicserver/resource/今天 - 劉德華.***";

string name="今天 - 劉德華.***";

string temp1=urlencoder.encode(name, "utf-8");

system.out.println(temp1);

輸出結果為:%e4%bb%8a%e5%a4%a9+-+%e5%88%98%e5%be%b7%e5%8d%8e.***

發現空格被轉碼成』+』了,而在tomcat伺服器中,空格是』%20』,所以會導致無法訪問到該路徑,可以採用下面的辦法解決問題:

首先將中文部分轉碼成utf-8格式的字串,然後將轉換後得到的字串中的所有』+』替換成』%20』。

string urlstring="http:10.0.0.2:8080/musicserver/resource/今天 - 劉德華.***";

string name="今天 - 劉德華.***";

string temp1=urlencoder.encode(name, "utf-8");

string temp2=temp1.replaceall("\\+", "%20"); //因為'+'是關鍵字,所以要進行轉義

system.out.println(temp1);

system.out.println(temp2);

輸出結果就為:

%e4%bb%8a%e5%a4%a9+-+%e5%88%98%e5%be%b7%e5%8d%8e.***

%e4%bb%8a%e5%a4%a9%20-%20%e5%88%98%e5%be%b7%e5%8d%8e.***

是正確的結果了。

配置tomcat虛擬路徑,訪問伺服器其他資源

專案開發中,涉及到檔案上傳功能時,為了減少tomcat壓力,通常不將檔案放在tomcat中而是放在伺服器的其他路徑中,此時訪問上傳檔案時需要在tomcat中配置虛擬路徑 1.配置虛擬路徑 開啟tomcat下conf資料夾中的server.xml在host標籤下新增如下 reloadable 是否啟用...

ubuntu下tft伺服器和nfs伺服器的搭建

ubuntu安裝tftp伺服器 1.安裝包 sudo apt get install tftp hpa tftpd hpa 前者客戶程式,後者服務程式 sudo apt get install openbsd inetd sudo apt get install xinetd 2.建tftp共享目錄...

Ubuntu下建立tftp伺服器

1 安裝程式 sudo apt get install tftp tftpd sudo apt get install openbsd inetd 2 新建資料夾 cd sudo mkdir tftpboot sudo chmod 777 tftpboot 3 修改存放目錄 sudo vi etc ...