導航:首頁 > 編程語言 > 怎樣處理nodejs的亂碼

怎樣處理nodejs的亂碼

發布時間:2025-06-09 10:01:42

1. 前端傳json後端怎麼接收(前端傳json後端接收亂碼)

前端向後端傳一個json數組對象

1、數據給後台,如果沒有框架的話,後台從request中拿到的只能是字元串或字元串數組,因為js沒有集合的概念。你可以把數據封裝成json格式的數組往後台傳,或者直接用request.getParameterValues(id)獲得字元串數組再轉成集合。

2、首先,功能說明:其實很簡單,就是要根據後台返回的json數據在頁面創建一個combotree,這個對象需要的是一個樹狀的json格式。

3、是document.getElementsByName吧?另外如果是在IE9或IE9以下,無論表單元素是寫name屬性或是id屬性都會取得到值。

4、將json字元串兒裝換成json對象,然後就可以訪問其中的數據了。

5、用你自己的pojo對象接收就可以了,前提是屬性值對應上json的KEY就可以了。

前端ajax非同步傳值以及後端接收參數的幾種方式

前端ajax傳遞表單數據,類似{name:zhangsan,age:17}後台只需利用request.getParameter(name)形式即可獲取對應的value值。前端傳遞json數據格式。

HTML賦值(輸出到Element的value或data-name)JS賦值(將數據填充到``的javaScript變數聲明中。)script填充JSON(填充JSON數據到``標簽中,前端通過DOM獲取JSON字元串並解析成對象。

通過表單傳遞前端使用表單時,為name屬性賦值,後台controller層方法的參數只要與name的值相同,即可獲取到該屬性的值。ajaxjs中將值取出來,通過data這個key傳值,數據的值裡面也是以key、value的方式,即JSON格式。

,2,3的前台ajax調用方法都一樣。如果需要區分不同的ajax調用。我們可以傳遞一個不同值的type參數。後台再通過switch執行各自的處理程序。(4)利用System.Web.Services.WebMethodAttribute。

後台應該如何取到前端傳來的json對象

前端發送類似如下的ajax請求:後台如果使用Servlet來接收的話,紅框中直接寫前端的JSON的實體類名來獲取;如果使用SSM框架整合的時候可以在Controller層配置Spring的註解@RequestBody可以處理前台傳的json數據與後台實體類對應。

首先,功能說明:其實很簡單,就是要根據後台返回的json數據在頁面創建一個combotree,這個對象需要的是一個樹狀的json格式。

用你自己的pojo對象接收就可以了,前提是屬性值對應上json的KEY就可以了。

url:url,dataType:json,data:{mydata:jsonStr},success:function(data,textStatus){alert(操作成功);},error:function(xhr,status,errMsg){alert(操作失敗!);}});第三部,後台方法接收。

【JSON】JSON在前端和後端傳遞

在數據傳輸過程中,JSON是以文本、即字元串的形式傳遞的,而JavaScript操作的是JSON對象,所以,JSON對象和JSON字元串之間的相互轉換是關鍵。

如果後端用nodejs的koa庫,直接從request.body中獲取對應參數即可。

將json字元串兒裝換成json對象,然後就可以訪問其中的數據了。

如果要給後端傳遞json數據,就需要增加content-type參數,告訴後端,傳遞過來的數據格式,並且需要將data轉為字元串進行傳遞。實際上,服務端接收到後,發現是json格式,做的操作就是將字元串轉為json對象。

如果是ajax就直接獲取如果是傳到一個頁面就再get再在js中使用%=變數名%就可以獲取了。

2. 如何用nodejs搭建web伺服器

使用Node.js搭建Web伺服器是學習Node.js比較全面的入門教程,因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等,下面我們就一起來學習如何搭建一個簡單的Web伺服器。

作為一個Web伺服器應具備以下幾個功能:

1、能顯示以.html/.htm結尾的Web頁面

2、能直接打開以.js/.css/.json/.text結尾的文件內容

3、顯示圖片資源

4、自動下載以.apk/.docx/.zip結尾的文件

5、形如http://xxx.com/a/b/ , 則查找b目錄下是否有index.html,如果有就顯示,如果沒有就列出該目錄下的所有文件及文件夾,並可以進一步訪問。

6、形如http://xxx.com/a/b, 則作301重定向到http://xxx.com/a/b/ , 這樣可以解決內部資源引用錯位的問題。

引入需要用到的幾個模塊:


//http協議模塊varhttp = require('http');//url解析模塊varurl = require('url');//文件系統模塊varfs = require("fs");//路徑解析模塊varpath = require("path");

創建服務並在指定的埠監聽:


//創建一個服務varhttpServer = http.createServer(this.processRequest.bind(this));//在指定的埠監聽服務httpServer.listen(port,function(){console.log("[HttpServer][Start]","runing at http://"+ip+":"+port+"/");console.timeEnd("[HttpServer][Start]");});

在創建服務的時候需要傳遞一個匿名函數processRequest 對請求進行處理,processRequest接收2個參數,分別是request和response, request對象中包含了請求的所有內容,response是用來設置響應頭以及對客戶端做出響應操作。


processRequest:function(request,response){varhasExt =true;varrequestUrl = request.url;varpathName = url.parse(requestUrl).pathname;//對請求的路徑進行解碼,防止中文亂碼pathName = decodeURI(pathName);//如果路徑中沒有擴展名if(path.extname(pathName) ===''){//如果不是以/結尾的,加/並作301重定向if(pathName.charAt(pathName.length-1) !="/"){pathName +="/";varredirect ="http://"+request.headers.host + pathName;response.writeHead(301, {location:redirect});response.end();return;}//添加默認的訪問頁面,但這個頁面不一定存在,後面會處理pathName +="index.html";hasExt =false;//標記默認頁面是程序自動添加的}//獲取資源文件的相對路徑varfilePath = path.join("http/webroot",pathName);//獲取對應文件的文檔類型varcontentType =this.getContentType(filePath);//如果文件名存在fs.exists(filePath,function(exists){if(exists){response.writeHead(200, {"content-type":contentType});varstream = fs.createReadStream(filePath,{flags:"r",encoding:null});stream.on("error", function() {response.writeHead(500,{"content-type":"text/html"});response.end("<h1>500 Server Error</h1>");});//返迴文件內容stream.pipe(response);}else{//文件名不存在的情況if(hasExt){//如果這個文件不是程序自動添加的,直接返回404response.writeHead(404, {"content-type":"text/html"});response.end("<h1>404 Not Found</h1>");}else{//如果文件是程序自動添加的且不存在,則表示用戶希望訪問的是該目錄下的文件列表varhtml ="<head><meta charset='utf-8'></head>";try{//用戶訪問目錄varfiledir = filePath.substring(0,filePath.lastIndexOf('\'));//獲取用戶訪問路徑下的文件列表varfiles = fs.readdirSync(filedir);//將訪問路徑下的所以文件一一列舉出來,並添加超鏈接,以便用戶進一步訪問for(variinfiles){varfilename = files[i];html +="<div><a href='"+filename+"'>"+filename+"</a></div>";}}catch(e){html +="<h1>您訪問的目錄不存在</h1>"}response.writeHead(200, {"content-type":"text/html"});response.end(html);}}});}

請求處理函數中有幾個重點需要說一下:

對於路徑中有中文的,瀏覽器會自動進行編碼(英文不變,中文會變),因此在接收到地址後,需要對地址進行解碼,否則最後得到的路徑和真實路徑不相符,

當訪問路徑不是以具體的文件結尾,並且不是以/結尾,則需要通過重定向加上/,表示當前目錄,否則當前路徑下的靜態資源會找不到

如果訪問路徑是目錄,則列出該目錄下所有文件及文件夾,並可以點擊訪問,為了讓中文目錄能正常顯示,則還要在header中設置charset=utf-8

核心代碼就這么多,大概140行左右,完整的代碼已上傳到github:https://github.com/git-onepixel/Node,

如果要運行demo,打開cmd切換到根目錄,運行node start 即可。

3. mac上安裝node.js彈出來的輸入框是什麼

輸入當前用戶的密碼

一、Mac 安裝 nodejs

前言

由於自己的拓展需求,要臨時使用到node.js,所以此次本君就在此mark下 Mac 下node.js的安裝和簡單的檢驗示例,給各位小主留個標記,提高下以後的效率。本章對於一些小白而言還是具有普及意義的。

step 1:

  • 訪問nodejs官網),點擊紅色選框區域的v6.10.0 LTS版本並下載,詳見下圖:

  • 官網版本.png

    step 2:

  • 雙擊剛下載的.pkg文件,打開之後按照步驟默認安裝就行,安裝完成後的截圖如下:

  • 安裝完成.png

    step 3:

  • 安裝完成後,需要進一步驗證下版本號等信息,在LaunchPad中打開終端,分別輸入 :
    npm -v
    node -v
    兩個命令,如下圖出現版本信息,說明安裝成功。

  • 終端驗證版本號.png

    step 4:

  • 新建一個js文件,nodejsTest.js , 輸入下面的代碼, 並保存

  • var http = require("http");


  • http.createServer(function(request, response) {

  • response.writeHead(200, { "Content-Type" : "text/plain"

  • });

  • response.write("Welcome to Nodejs");

  • response.end();

  • }).listen(8000, "127.0.0.1");console.log("Creat server on http://127.0.0.1:8000/");

  • 打開終端進入 nodejsTest.js 所在目錄, 輸入 node nodejsTest
    終端顯示如下:

    終端運行.png

    打開瀏覽器,點擊或者輸入http://127.0.0.1:8000/, 如果無法打開,可以將剛才新建的js文件中的.listen(8000, 「127.0.0.1」) 的ip監聽改成 .listen(8000),然後點擊或者輸入http://localhost:8000/

    瀏覽器測試.png

    二、#Mac系統下SublimeText運行JavaScript控制台

    Sublime Text 2下載地址:(ht.com/)

    Sublime Text 2.png

    前言

    JavaScript控制台的調試和輸出在瀏覽器端的使用算是工作中常用了,作為前端開發主力編輯器Sublime Text本身是不支持JavaScript的輸出和運行的。有的時候我們需要看一下輸出的效果,不得不藉助於F12查看控制台的程序。作為插件系統及其豐富的編輯器,我們可以通過添加Build System的方法來讓Sublime Text支持Javascript Console控制台調試。

    JSC方式(Mac OS X)

    step 1:

    Mac內置了一個javascript控制台程序,路徑比較深,(可以用命令"open 目錄"來打開目錄)

  • /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc


  • 打開目錄.png

    step 2:

    啟動Sublime Text,Tools > Build System > New Build System,如下圖所示:

    New Build System.png

    step 3:

  • 配置選項內容,保存在默認的User目錄

  • {

  • "cmd": ["/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc", "$file"],

  • "selector": "source.js" }


  • 保存.png

  • 菜單SublimeText->preferences->browser pakager,打開目錄

  • 打開目錄.png

    step 4:

    新建一個JS文件測試控制台輸出效果,使用快捷鍵Command + B按鈕進行調試,需要注意的是這里使用debug,而不能使用console.log;選擇編譯系統,菜單Tools > Build System > Automatic或者JSC

  • var temp = {name:'lili',age:28};

  • for (var i = 2; i >= 0; i--) {

  • debug("Sublime Test3:"+i);

  • }

  • debug(temp);

  • // 輸出 // --> Sublime Test3:2 // --> Sublime Test3:1 // --> Sublime Test3:0 // --> [object Object]

  • 截圖如下所示:

    截圖.png

    NodeJS方式

    step 1:

    下載安裝NodeJS,安裝步驟詳見上文所述,檢查是否安裝了NodeJS,在終端中運行 node -v 命令

    step 2:

    重復上文中JSC方式的第二步,在Build Sytem添加以下內容:保存為NodeJS.sublime-build

  • {

  • "cmd": ["node", "$file"],

  • "selector": "source.js" }


  • 按照如上方式操作後,你可能會發現自己怎麼不OK呢?!可能自己就是那不幸運的一部分,如果你沒有成功也不用著急,可以參考以下方式,接著來Do it!
    在終端運行:which node
    獲取路徑如下:/usr/local/bin/node
    重新配置如下:

  • {

  • "cmd": ["/usr/local/bin/node", "$file"],

  • "selector": "source.js" }


  • step 3:

    測試輸出效果:

  • var temp = {name:'lili',age:24};

  • for (var i = 2; i >= 0; i--) {

  • console.log("Sublime Test3:"+i);//在NodeJS下沒有debug()函數 }

  • console.log(temp);

  • // 輸出 // Sublime Test3:2 // Sublime Test3:1 // Sublime Test3:0 // { name: 'lili', age: 24 }

  • 安裝Package Control

    如果需要使用Sublime Test安裝插件,可以訪問這個網站ol.io/installation,按照說明安裝Package Control。重啟sublime text,在package control Install中搜索這個插件並下載。也就是說這個插件可以在sublime中直接搜索下載。



4. HTTPS和SSH方式的區別和使用

在管理Git項目上,很多時候都是直接使用https url克隆到本地,當然也有有些人使用SSH url克隆到本地。這兩種方式的主要區別在於:使用https url克隆對初學者來說會比較方便,復制https url然後到git Bash裡面直接用clone命令克隆到本地就好了,但是每次fetch和push代碼都需要輸入賬號和密碼,這也是https方式的麻煩之處。而使用SSH url克隆卻需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的話,你必須是這個項目的擁有者。否則你是無法添加SSH key的,另外ssh默認是每次fetch和push代碼都不需要輸入賬號和密碼,如果你想要每次都輸入賬號密碼才能進行fetch和push也可以另外進行設置。

5. nodejs當web伺服器行不行

可以呀

使用Node.js搭建Web伺服器是學習Node.js比較全面的入門教程,因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等,下面我們就一起來學習如何搭建一個簡單的Web伺服器。

作為一個Web伺服器應具備以下幾個功能:

1、能顯示以.html/.htm結尾的Web頁面

2、能直接打開以.js/.css/.json/.text結尾的文件內容

3、顯示圖片資源

4、自動下載以.apk/.docx/.zip結尾的文件

5、形如http://xxx.com/a/b/ , 則查找b目錄下是否有index.html,如果有就顯示,如果沒有就列出該目錄下的所有文件及文件夾,並可以進一步訪問。

6、形如http://xxx.com/a/b, 則作301重定向到http://xxx.com/a/b/ , 這樣可以解決內部資源引用錯位的問題。

引入需要用到的幾個模塊:


//http協議模塊varhttp = require('http');//url解析模塊varurl = require('url');//文件系統模塊varfs = require("fs");//路徑解析模塊varpath = require("path");

創建服務並在指定的埠監聽:


//創建一個服務varhttpServer = http.createServer(this.processRequest.bind(this));//在指定的埠監聽服務httpServer.listen(port,function(){console.log("[HttpServer][Start]","runing at http://"+ip+":"+port+"/");console.timeEnd("[HttpServer][Start]");});

在創建服務的時候需要傳遞一個匿名函數processRequest 對請求進行處理,processRequest接收2個參數,分別是request和response, request對象中包含了請求的所有內容,response是用來設置響應頭以及對客戶端做出響應操作。

processRequest:function(request,response){varhasExt =true;varrequestUrl = request.url;varpathName = url.parse(requestUrl).pathname;//對請求的路徑進行解碼,防止中文亂碼pathName = decodeURI(pathName);//如果路徑中沒有擴展名if(path.extname(pathName) ===''){//如果不是以/結尾的,加/並作301重定向if(pathName.charAt(pathName.length-1) !="/"){pathName +="/";varredirect ="http://"+request.headers.host + pathName;response.writeHead(301, {location:redirect});response.end();return;}//添加默認的訪問頁面,但這個頁面不一定存在,後面會處理pathName +="index.html";hasExt =false;//標記默認頁面是程序自動添加的}//獲取資源文件的相對路徑varfilePath = path.join("http/webroot",pathName);//獲取對應文件的文檔類型varcontentType =this.getContentType(filePath);//如果文件名存在fs.exists(filePath,function(exists){if(exists){response.writeHead(200, {"content-type":contentType});varstream = fs.createReadStream(filePath,{flags:"r",encoding:null});stream.on("error", function() {response.writeHead(500,{"content-type":"text/html"});response.end("<h1>500 Server Error</h1>");});//返迴文件內容stream.pipe(response);}else{//文件名不存在的情況if(hasExt){//如果這個文件不是程序自動添加的,直接返回404response.writeHead(404, {"content-type":"text/html"});response.end("<h1>404 Not Found</h1>");}else{//如果文件是程序自動添加的且不存在,則表示用戶希望訪問的是該目錄下的文件列表varhtml ="<head><meta charset='utf-8'></head>";try{//用戶訪問目錄varfiledir = filePath.substring(0,filePath.lastIndexOf('\'));//獲取用戶訪問路徑下的文件列表varfiles = fs.readdirSync(filedir);//將訪問路徑下的所以文件一一列舉出來,並添加超鏈接,以便用戶進一步訪問for(variinfiles){varfilename = files[i];html +="<div><a href='"+filename+"'>"+filename+"</a></div>";}}catch(e){html +="<h1>您訪問的目錄不存在</h1>"}response.writeHead(200, {"content-type":"text/html"});response.end(html);}}});}

請求處理函數中有幾個重點需要說一下:

對於路徑中有中文的,瀏覽器會自動進行編碼(英文不變,中文會變),因此在接收到地址後,需要對地址進行解碼,否則最後得到的路徑和真實路徑不相符,

當訪問路徑不是以具體的文件結尾,並且不是以/結尾,則需要通過重定向加上/,表示當前目錄,否則當前路徑下的靜態資源會找不到

如果訪問路徑是目錄,則列出該目錄下所有文件及文件夾,並可以點擊訪問,為了讓中文目錄能正常顯示,則還要在header中設置charset=utf-8

核心代碼就這么多,大概140行左右,完整的代碼已上傳到github:https://github.com/git-onepixel/Node,

如果要運行demo,打開cmd切換到根目錄,運行node start 即可。

6. js,nodejs如何判斷文件是什麼編碼格式

nodejs編碼只支持utf8的編碼方式,無論是打開某個文件或者寫.js腳本都得以utf8的編碼方式保存,不然程序無法運行,讀出來的文件是亂碼。
如果是在前台,讀取文件是通過FileReader或者FileReaderSync這兩個webAPI和input[type='file']標簽來配合來完成,但是這個兩個API已經包涵了判斷文件的編碼方式的功能,無論是GBK還是utf8編碼的文件都能正確打開不出現亂碼,但是nodejs就會出現這樣的問題,讀取gbk和unicode編碼的文件出現奇怪的亂碼,有一個模塊iconv-lite可以解決搜信編碼問題,但是前提是你得知道這個文件的編碼方式,舉個例子:
有一個gkb的文件叫gbk.txt正確查看它的方式如下:
var icon=require('iconv-lite');
var fs=require('fs'改漏備)
fs.readFile('gbk.txt',function(err,buffer){
var str=iconv.decode(buffer,'gbk')
console.log(str)//得到無亂碼的內容
})
但是如果不知道文件的編碼方式,那有該怎麼辦呢?
那就來聊一聊編碼方式,首先UNICODE編碼,UNICODE編碼的文件無論核毀內容是什麼,前兩個位元組要不是FF FE 或者 FE FF,
utf-8頭兩個位元組是EF BB,至於gbk吧,目前我沒找到判斷方法,只能粗略的判斷如果不是unicode和utf8就認為是GBK,
代碼如下:
var fs=require('fs')
fs.readFile('code.txt',function(err,buffer){
if(buffer[0]==0xff&&buffer[1]==0xfe){
console.log('unicode')
}else if(buffer[0]==0xfe&&buffer[1]==0xff){
console.log('unicode')
}else if(buffer[0]==0xef&&buffer[1]==0xbb){
console.log('utf8')
}else{
console.log('else')
}
})

7. nodejs爬蟲,html 網頁中文亂碼處理

在處理彩票網站網頁時,遇到了中文亂碼問題,這在瀏覽器正常顯示時並未出現。使用Node.js爬取並保存HTML文檔後,發現中文部分顯示為亂碼。

起初,懷疑是網站反爬措施導致的字體替換問題。但查看HTML源碼後,發現字元集為gb2312。隨後,查閱了關於爬蟲亂碼及編碼轉換的相關資料,了解到將GBK編碼轉為UTF8編碼即可解決此問題。

對HTML源碼進行分析,發現中文亂碼為口字碼。為解決此問題,引入了iconv-lite庫,該庫支持編碼間的轉換。使用iconv-lite將GBK編碼的Buffer轉換為UTF8編碼,成功解決了中文亂碼問題。

在安裝和使用iconv-lite時,需注意調用iconv.decode()方法的參數應為Buffer類型。在請求時,確保獲取的數據為未經處理的Buffer類型,否則將無法正確轉換編碼。使用axios進行請求時,可設置響應數據類型為Buffer,以獲取未處理的原始數據。對於使用request發送請求的情況,將encoding設置為null即可獲取Buffer類型的響應數據。

8. 如何用nodejs搭建web伺服器

使用Node.js搭建Web伺服器是學習Node.js比較全面的入門教程,因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等,下面我們就一起來學習如何搭建一個簡單的Web伺服器。

作為一個Web伺服器應具備以下幾個功能:

1、能顯示以.html/.htm結尾的Web頁面

2、能直接打開以.js/.css/.json/.text結尾的文件內容

3、顯示圖片資源

4、自動下載以.apk/.docx/.zip結尾的文件

5、形如http://xxx.com/a/b/ , 則查找b目錄下是否有index.html,如果有就顯示,如果沒有就列出該目錄下的所有文件及文件夾,並可以進一步訪問。

6、形如http://xxx.com/a/b, 則作301重定向到http://xxx.com/a/b/ , 這樣可以解決內部資源引用錯位的問題。

引入需要用到的幾個模塊:


//http協議模塊varhttp = require('http');//url解析模塊varurl = require('url');//文件系統模塊varfs = require("fs");//路徑解析模塊varpath = require("path");

創建服務並在指定的埠監聽:


//創建一個服務varhttpServer = http.createServer(this.processRequest.bind(this));//在指定的埠監聽服務httpServer.listen(port,function(){console.log("[HttpServer][Start]","runing at http://"+ip+":"+port+"/");console.timeEnd("[HttpServer][Start]");});

在創建服務的時候需要傳遞一個匿名函數processRequest 對請求進行處理,processRequest接收2個參數,分別是request和response, request對象中包含了請求的所有內容,response是用來設置響應頭以及對客戶端做出響應操作。


processRequest:function(request,response){varhasExt =true;varrequestUrl = request.url;varpathName = url.parse(requestUrl).pathname;//對請求的路徑進行解碼,防止中文亂碼pathName = decodeURI(pathName);//如果路徑中沒有擴展名if(path.extname(pathName) ===''){//如果不是以/結尾的,加/並作301重定向if(pathName.charAt(pathName.length-1) !="/"){pathName +="/";varredirect ="http://"+request.headers.host + pathName;response.writeHead(301, {location:redirect});response.end();return;}//添加默認的訪問頁面,但這個頁面不一定存在,後面會處理pathName +="index.html";hasExt =false;//標記默認頁面是程序自動添加的}//獲取資源文件的相對路徑varfilePath = path.join("http/webroot",pathName);//獲取對應文件的文檔類型varcontentType =this.getContentType(filePath);//如果文件名存在fs.exists(filePath,function(exists){if(exists){response.writeHead(200, {"content-type":contentType});varstream = fs.createReadStream(filePath,{flags:"r",encoding:null});stream.on("error", function() {response.writeHead(500,{"content-type":"text/html"});response.end("<h1>500 Server Error</h1>");});//返迴文件內容stream.pipe(response);}else{//文件名不存在的情況if(hasExt){//如果這個文件不是程序自動添加的,直接返回404response.writeHead(404, {"content-type":"text/html"});response.end("<h1>404 Not Found</h1>");}else{//如果文件是程序自動添加的且不存在,則表示用戶希望訪問的是該目錄下的文件列表varhtml ="<head><meta charset='utf-8'></head>";try{//用戶訪問目錄varfiledir = filePath.substring(0,filePath.lastIndexOf('\'));//獲取用戶訪問路徑下的文件列表varfiles = fs.readdirSync(filedir);//將訪問路徑下的所以文件一一列舉出來,並添加超鏈接,以便用戶進一步訪問for(variinfiles){varfilename = files[i];html +="<div><a href='"+filename+"'>"+filename+"</a></div>";}}catch(e){html +="<h1>您訪問的目錄不存在</h1>"}response.writeHead(200, {"content-type":"text/html"});response.end(html);}}});}

請求處理函數中有幾個重點需要說一下:

對於路徑中有中文的,瀏覽器會自動進行編碼(英文不變,中文會變),因此在接收到地址後,需要對地址進行解碼,否則最後得到的路徑和真實路徑不相符,

當訪問路徑不是以具體的文件結尾,並且不是以/結尾,則需要通過重定向加上/,表示當前目錄,否則當前路徑下的靜態資源會找不到

如果訪問路徑是目錄,則列出該目錄下所有文件及文件夾,並可以點擊訪問,為了讓中文目錄能正常顯示,則還要在header中設置charset=utf-8

核心代碼就這么多,大概140行左右,完整的代碼已上傳到github:https://github.com/git-onepixel/Node,

如果要運行demo,打開cmd切換到根目錄,運行node start 即可。

閱讀全文

與怎樣處理nodejs的亂碼相關的資料

熱點內容
描述文件怎麼刪除 瀏覽:379
10寸以上安卓平板電腦 瀏覽:207
和慧眼默認密碼 瀏覽:866
有什麼百度雲網站 瀏覽:512
c語言數據結構書有哪些 瀏覽:4
ug編程教程哪個好 瀏覽:872
網路入侵實例 瀏覽:696
資料庫視圖的好處 瀏覽:307
blogger復制wordpress 瀏覽:330
授課app如何製作 瀏覽:2
資料庫里怎麼取符前的值 瀏覽:58
編程和軟體專業哪個好 瀏覽:862
新版微信小視頻對焦 瀏覽:995
抖音直播在哪裡看推廣數據 瀏覽:518
路由器貓都正常沒有網路連接 瀏覽:323
安卓燒餅修改器root 瀏覽:798
騰訊問卷數據導哪裡了 瀏覽:907
ppt文件分開瀏覽 瀏覽:565
線下少兒編程課程哪個品牌比較好 瀏覽:344
三星c7備忘錄文件 瀏覽:277

友情鏈接