node utf8漢字亂碼怎麼辦
node utf8漢字亂碼的解決方法:1、透過「typeof」查看「SarchName」的型別;2、使用「Name=iconv.decode(name,'gbk')」方式轉換編碼為utf8即可。
本教學操作環境:Windows10系統、node v14.16.0版、DELL G3電腦
node utf8漢字亂碼怎麼辦?
node.js實作編碼轉GBK轉UTF8,中文亂碼方案
在做這些之前遇見了一個需求,則是用node去做一個姓名的模糊查詢。其實這是一個簡單再也不能簡單的事情,但卻在這個問題上卡了兩天。
因為業務需要,給新功能做一個模糊查詢。
首先,我得搭建了一個node的http服務,然後我設定了mysql。建立了ORM模型後,準備開始寫sql語句的時候遇見了一個奇怪的事情,由於我的node是utf8的編碼。但是我們公司的資料庫採用的是GBK的編碼,因此導致我在進行資料查詢的時候出現了錯誤,查詢失敗,原因就是因為編碼問題導致。
這問題也很簡單,轉碼嗆! ! !
開始百度node的轉碼方法在這裡就遇見了iconv-jschardet這個插件,於是去npm了一下。開始使用
const iconv = require('iconv-jschardet'); SarchName = iconv.encode(SarchName, 'gbk');
把前端送上來的字元轉成GBK的編碼,很開心。
結果還是報錯了。因為這個錯誤,我找了一整個下午。我也不知道轉成功了沒有,於是試了無數種辦法還是無法解決這個編碼問題,於是想到了之前在寫PHP的時候查詢的時候用SQL轉成二進制進行模糊匹配。
於是我typeof了一下SarchName居然是Obj我就很納悶了應該是String於是輸出印了一下,一看是個Buffer。這下明白了原來沒有直接轉成String那好,我就用Buffer.toString()方法結果還是不行,然後翻了一下文件。發現沒有GBK的編碼,這下就頭大了。
然後我試了試ascii發現還是不行,於是我試了一下binary結果ok了。
**模糊查詢執行完成沒問題了,在傳回的資料的時候發現都還是GBK編碼。那簡單啊! ! ! !那就轉成utf8
Name=iconv.decode(name,'gbk')
然後返回發現沒問題,那ok完成了。
沒過一會兒別人就測出bug說人的名字沒有顯示完全! ! ! !
結果有的人的名字出現了這個符號�。 。 。 。 。
百度發現說解碼不全,暫無任何解決方法。 。 。
最後沒辦法只能用了indexOf('�')方法去檢索字串中出現生僻字
然後記錄其狀態再用PHP進行轉碼。
總之一個字,坑! **
補充:node.js的gbk轉utf8 遇見一些生僻字還是會轉不出來出現亂碼,建議有gbk的庫別讓node去做中文轉碼之類的事情,換別的語言吧。
推薦學習:《node.js影片教學》
以上是node utf8漢字亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

基於無阻塞、事件驅動建立的Node服務,具有記憶體消耗低的優點,非常適合處理海量的網路請求。在海量請求的前提下,就需要考慮「記憶體控制」的相關問題了。 1. V8的垃圾回收機制與記憶體限制 Js由垃圾回收機

utf8編碼漢字佔3個位元組。在UTF-8編碼中,一個中文等於三個位元組,一個中文標點佔三個位元組;而在Unicode編碼中,一個中文(含繁體)等於兩個位元組。 UTF-8使用1~4位元組為每個字元編碼,一個US-ASCIl字元只需1位元組編碼,帶有變音符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文等字母則需要2位元組編碼。

選擇一個Node的Docker映像看起來像是小事,但是映像的大小和潛在漏洞可能會對你的CI/CD流程和安全造成重大的影響。那我們要如何選擇一個最好Node.js Docker映像呢?

Node 19已正式發布,以下這篇文章就來帶大家詳解了解Node.js 19的 6 大特性,希望對大家有幫助!

文件模組是對底層文件操作的封裝,例如文件讀寫/打開關閉/刪除添加等等文件模組最大的特點就是所有的方法都提供的**同步**和**異步**兩個版本,具有sync 字尾的方法都是同步方法,沒有的都是異

事件循環是 Node.js 的基本組成部分,透過確保主執行緒不被阻塞來實現非同步編程,了解事件循環對建立高效應用程式至關重要。以下這篇文章就來帶大家深入了解Node中的事件循環 ,希望對大家有幫助!
