『壹』 nodejs中使用$.get 獲取html出現中文亂碼
npm install -g nodegrass //安裝此模塊使用
var gs = require('nodegrass');
gs.get('http://www.jd.com', function(data){
console.log(data);//將data輸出即使中文
}, 'gbk').on('error',funtion(err){
console.log(err);
});
可以查查nodegrass的說明 https://github.com/scottkiss/nodegrass
『貳』 vscode已經按正常程序安裝,可是不論運行什麼js代碼就輸出這些玩意如下圖,運行html正常,求教,急!
報錯信息是vscode無法識別node。
這是由於先打開的vscode後安裝nodejs,vscode只在啟動時讀取環境變數
確保nodejs添加到環境變數,然後重啟vscode就可以了
『叄』 nodejs中ejs宓膖itle亂碼怎麼辦
在ejs模板里添加上面那句話沒問題,但如果引用某個js,這個js里alert中文,那麼這個中文就變成亂碼了,這是怎麼回事呢?頁面上設置了utf-8編碼的,引入的js文件也是utf-8格式的
『肆』 nodejs上傳文件,文件內容中文亂碼
前端上傳的是復gbk, 你後端當成utf8, 當然制這樣了.
一種是你前端規定只能上傳utf8文本文件;
還有一種你知道前端大部分都是gbk, 後端做gbk到utf8的轉化. (我那個時候nodejs似乎還沒內置gbk解碼器, 現在不知道了)
『伍』 nodejs運行會出現亂碼,該怎麼解決
nodejs亂碼處理
1.處理回顯亂碼
res.write("<head><meta charset='utf-8'></head>");
2.處理傳參亂碼
querystring.escape(str)
escape可使傳入的字元串進行編碼
querystring.escape
querystring.escape("name=慕白");
/*
return:
'name%3D%E6%85%95%E7%99%BD'
*/
querystring.unescape(str)
unescape方法可將含有%的字元串進行解碼
querystring.unescape
querystring.unescape('name%3D%E6%85%95%E7%99%BD');
/*
return:
'name=慕白'
*/
3.與編碼相關的代碼
var encoding = require('encoding');var iconv = require('iconv-lite');
console.log(encoding.convert("%E7%9A%84%E5%A3%AB%E9%80%9F%E9%80%92", "utf-8"));
console.log(iconv.decode('%E7%9A%84%E5%A3%AB%E9%80%9F%E9%80%92', 'utf-8'));
『陸』 如何使用Node.js處理前端代碼文件的編碼問題
使用 NodeJS 編寫前端工具時,操作得最多的是文本文件,因此也就涉及到了文件編碼的處理問題。我們常用的文本編碼有 UTF8 和 GBK 兩種,並且 UTF8 文件還可能帶有 BOM。在讀取不同編碼的文本文件時,需要將文件內容轉換為 JS 使用的 UTF8 編碼字元串後才能正常處理。
1、BOM 的移除
BOM 用於標記一個文本文件使用 Unicode 編碼,其本身是一個 Unicode 字元("uFEFF"),位於文本文件頭部。在不同的 Unicode 編碼下,BOM 字元對應的二進制位元組如下:
3、單位元組編碼
有時候,我們無法預知需要讀取的文件採用哪種編碼,因此也就無法指定正確的編碼。比如我們要處理的某些 CSS 文件中,有的用 GBK 編碼,有的用 UTF8 編碼。雖然可以一定程度可以根據文件的位元組內容猜測出文本編碼,但這里要介紹的是有些局限,但是要簡單得多的一種技術。
首先我們知道,如果一個文本文件只包含英文字元,比如 Hello World,那無論用 GBK 編碼或是 UTF8 編碼讀取這個文件都是沒問題的。這是因為在這些編碼下,ASCII0~128 范圍內字元都使用相同的單位元組編碼。
反過來講,即使一個文本文件中有中文等字元,如果我們需要處理的字元僅在 ASCII0~128 范圍內,比如除了注釋和字元串以外的JS代碼,我們就可以統一使用單位元組編碼來讀取文件,不用關心文件的實際編碼是 GBK 還是 UTF8。