前端知識(十一)———js判斷上傳的文件是GBK編碼還是UTF-8

1、獲取文件二進制數據,這里只做示例,例如element-ui中文件上傳的beforeUpload方法,返回的file對象,然后使用FileReader對其進行轉換,再進行后續判斷?

function beforeUpload(file: File) { const reader = new FileReader();reader.readAsArrayBuffer(file);reader.onload = function (e: any) {// 等待file文件對象轉換完成}
}

2、將二進制數據處理為無符號整數,也就是處理為字節

reader.onload = function (e: any) {const btyes= new Uint8Array(e.target.result)console.log(btyes);if (isUTF8(btyes)) {console.log('utf-8');} else {console.log('GBK');}
}

3、isUTF8函數

// 判斷文件編碼格式的函數
function isUTF8(bytes) {var i = 0;while (i < bytes.length) {if ((// ASCIIbytes[i] == 0x09 ||bytes[i] == 0x0A ||bytes[i] == 0x0D ||(0x20 <= bytes[i] && bytes[i] <= 0x7E))) {i += 1;continue;}if ((// non-overlong 2-byte(0xC2 <= bytes[i] && bytes[i] <= 0xDF) &&(0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF))) {i += 2;continue;}if ((// excluding overlongsbytes[i] == 0xE0 &&(0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF)) ||(// straight 3-byte((0xE1 <= bytes[i] && bytes[i] <= 0xEC) ||bytes[i] == 0xEE ||bytes[i] == 0xEF) &&(0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF)) ||(// excluding surrogatesbytes[i] == 0xED &&(0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x9F) &&(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF))) {i += 3;continue;}if ((// planes 1-3bytes[i] == 0xF0 &&(0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&(0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)) ||(// planes 4-15(0xF1 <= bytes[i] && bytes[i] <= 0xF3) &&(0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&(0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)) ||(// plane 16bytes[i] == 0xF4 &&(0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) &&(0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&(0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF))) {i += 4;continue;}return false;}return true;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211161.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211161.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211161.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp圖片預覽

用的是Uview組件庫里面的 直接在頁面寫上&#xff1a; <u-album singleSize"100" :urls"[https://lxt.jingyi.icu/item.img]"></u-album> 這圖片路徑是我自己的 你們可以按照組件庫里面的方法去實現

DataFrame的使用

查看數據類型及屬性 # 查看df類型 type(df) # 查看df的shape屬性&#xff0c;可以獲取DataFrame的行數&#xff0c;列數 df.shape # 查看df的columns屬性&#xff0c;獲取DataFrame中的列名 df.columns # 查看df的dtypes屬性&#xff0c;獲取每一列的數據類型 df.dtypes df.i…

標準成本核算基礎知識 – 了解間接費用成本流程 - Part4

原文地址&#xff1a;Basics of Standard Costing – Understanding overhead cost flow-Part 4 | SAP Blogs 這是我理解標準成本計算及其流程的另一篇文檔的延續。 標準成本核算基礎知識 - 了解成本構成結構 - 第 3 部分 管理費用是只能間接歸因于產品的成本&#xff0c;例如…

react中使用react-konva實現畫板框選內容

文章目錄 一、前言1.1、API文檔1.2、Github倉庫 二、圖形2.1、拖拽draggable2.2、圖片Image2.3、變形Transformer 三、實現3.1、依賴3.2、源碼3.2.1、KonvaContainer組件3.2.2、use-key-press文件 3.3、效果圖 四、最后 一、前言 本文用到的react-konva是基于react封裝的圖形繪…

基礎課20——從0-1客服機器人生命周期

溫馨提示&#xff1a;篇幅較長&#xff0c;可點擊目錄查看對應節點。 1.機器人搭建期 搭建機器人包含&#xff1a;素材整理、問題提煉、相似問題補充、答案編輯、問題分配引擎等等步驟&#xff0c;不同廠商可能有所區別&#xff0c;但關鍵功能的實現離不開以下步驟。 1.1素材…

Flutter路由的幾種用法

Flutter路由跳轉 基本路由跳轉 ElevatedButton(onPressed: () {//基本路由跳轉Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) {return const SearchPage();}),);},child: const Text("基本路由跳轉"), ), search.dart頁面 impo…

說說react的事件機制?

React的事件機制是一種用于處理用戶界面事件的方式&#xff0c;它建立在原生DOM事件的基礎上&#xff0c;提供了一種更高級、更一致的方式來處理事件。 1. 合成事件&#xff08;Synthetic Events&#xff09;&#xff1a;React引入了合成事件的概念&#xff0c;它是一種React自…

K8S學習指南(3)-minikube的安裝

這里寫自定義目錄標題 簡介Windows 系統安裝步驟 1&#xff1a;安裝 Hypervisor步驟 2&#xff1a;安裝 kubectl步驟 3&#xff1a;安裝 Minikube步驟 4&#xff1a;啟動 Minikube CentOS 系統安裝步驟 1&#xff1a;安裝 Hypervisor步驟 2&#xff1a;安裝 kubectl步驟 3&…

《形式語言與自動機理論(第4版)》筆記(三)

文章目錄 [toc]前導《形式語言與自動機理論&#xff08;第4版&#xff09;》筆記&#xff08;一&#xff09;《形式語言與自動機理論&#xff08;第4版&#xff09;》筆記&#xff08;二&#xff09; 第四章&#xff1a;正則表達式4.1|啟示4.2|正則表達式的形式定義正則表達式性…

排序算法之四:直接選擇排序

1.基本思想 每一次從待排序的數據元素中選出最小&#xff08;或最大&#xff09;的一個元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的數據元素排完 。 2.直接選擇排序 在元素集合array[i]--array[n-1]中選擇關鍵碼最大(小)的數據元素 若它不是這組元素中的…

練習:最大公約數

1.什么是公約數 公約數&#xff0c;亦稱“公因數”。 它是指能同時整除幾個整數的數 。 如果一個整數同時是幾個整數的 約數 &#xff0c;稱這個整數為它們的“公約數”&#xff1b;公約數中最大的稱為最大公約數。 2.輾轉相除法 輾轉相除法之所以有效是因為其基于一個核心原…

給定有n個結點的樹和長度為n的排列,q次詢問:l, r, x, 若p[l, r]中存在至少一個結點是x的后代,輸出yes,否則輸出no

題目 #include<bits/stdc.h> using namespace std; const int maxn 1e6 5; int n, q; vector<int> G[maxn]; int L[maxn], R[maxn];//L[i]表示結點i的時間戳&#xff0c;R[i]表示結點i的后代中時間戳的最大值 int p[maxn]; int t[maxn]; struct Node{int id, fl…

MapReduce

1. 請解釋MapReduce的工作原理。 MapReduce是一種編程模型&#xff0c;主要用于大規模數據集&#xff08;特別是非結構化數據&#xff09;的并行處理。這個模型的核心思想是將大數據處理任務分解為兩個主要步驟&#xff1a;Map和Reduce。 在Map階段&#xff0c;輸入數據被分解…

ssm的健身房預約系統(有報告)。Javaee項目。ssm項目。

演示視頻&#xff1a; ssm的健身房預約系統&#xff08;有報告&#xff09;。Javaee項目。ssm項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三層體系結構&#xff0c;通過Spring Spring…

AI模型平臺Hugging Face存在API令牌漏洞;大型語言模型與任務模型

&#x1f989; AI新聞 &#x1f680; AI模型平臺Hugging Face存在API令牌漏洞&#xff0c;黑客可竊取、修改模型 摘要&#xff1a;安全公司Lasso Security發現AI模型平臺Hugging Face上存在API令牌漏洞&#xff0c;黑客可獲取微軟、谷歌等公司的令牌&#xff0c;并能夠訪問模…

c++中的內聯函數和編譯器

內聯函數和編譯器&#xff1a; 內聯函數并不是何時何地都有效&#xff0c;為了理解內聯函數何時有效&#xff0c;應該要知道編譯器碰到內聯 函數會怎么處理&#xff1f; 對于任何類型的函數&#xff0c;編譯器會將函數類型(包括函數名字&#xff0c;參數類型&#xff0c;返回值…

Unknown parameter in InstanceGroups[0]: “Configurations“, must be ... 解決方法

使用 aws emr modify-instance-groups 更新集群配置時可能會遇到如下錯誤信息&#xff1a; Unknown parameter in InstanceGroups[0]: “Configurations”, must be one of: InstanceGroupId, InstanceCount, EC2InstanceIdsToTerminate, ShrinkPolicy 這一報錯其實和提供的j…

C語言進階之路之頂峰相見篇

目錄 一、學習目標 二、宏定義 預處理 宏的概念 帶參宏 無值宏定義 三、條件編譯 條件編譯 條件編譯的使用場景 四、頭文件 頭文件的作用 頭文件的內容 頭文件的基礎語句&#xff1a; GCC編譯器的4個編譯步驟&#xff1a; 總結 一、學習目標 掌握宏定義含義和用…

【Linux】系統初識之馮諾依曼體系結構與操作系統

&#x1f440;樊梓慕&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;《C語言》《數據結構》《藍橋杯試題》《LeetCode刷題筆記》《實訓項目》《C》《Linux》 &#x1f31d;每一個不曾起舞的日子&#xff0c;都是對生命的辜負 目錄 前言 1.馮諾依曼體系結構 2.操作…

Springboot項目實現簡單的文件服務器,實現文件上傳+圖片及文件回顯

文章目錄 寫在前面一、配置1、application.properties2、webMvc配置3、查看效果 二、文件上傳 寫在前面 平常工作中的項目&#xff0c;上傳的文件一般都會傳到對象存儲云服務中。當接手一個小項目&#xff0c;如何自己動手搭建一個文件服務器&#xff0c;實現圖片、文件的回顯…