1. 程式人生 > >處理 無效的 utf-16 編碼

處理 無效的 utf-16 編碼

const replacement = '\ufffd';
// https://gist.github.com/mathiasbynens/bbe7f870208abcfec860
const loneSurrogates = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|([^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g;

// string sanitizes the given str by replacing invalid UTF-16 code unit
// sequences with the unicode replacement character. Returns a new string.
//用 \ufffd 取代無效的增補位元組的,無效的高位或者低位
exports.string = function(str) {
    return str.replace(loneSurrogates, '$1' + replacement);
}

原模組: https://github.com/felixge/node-unicode-sanitize/blob/master/index.js

相關推薦

處理 無效utf-16 編碼

const replacement = '\ufffd'; // https://gist.github.com/mathiasbynens/bbe7f870208abcfec860 const loneSurrogates = /[\uD800-\uDBFF](?![\u

弄懂進位制、bit、java基本資料型別(byte、short、int 、char 、String)、ASCII、Unicode、UTF-8、UTF-16的關聯關係及UTF-8、UTF-16編碼原理

首先普及一下基本概念: 1.數值(百度百科):指的是用數目表示的一個量的多少; 2.進位制(百度百科):也就是進位計數制,是人為定義的帶進位的計數方法。對於任何一種進位制---X進位制,就表示每一位置上的數運算時都是逢X進一位。 十進位制是逢十進一,十六進位制是逢十六進一,二進位制就是逢二進

ASCII、GB2312、GBK、Unicode、UTF-8、UTF-16 編碼方式比較分析

實際上在日常工作開發中,中文亂碼是經常出現的一類問題。下面介紹一下ASCII、GB2312、GBK、Unicode、UTF-8、UTF-16、UTF-32編碼的原理以及不同點和區別。 ASCII ASCII的英文翻譯是:American Standard Code f

Java中的UTF-8、UTF-16編碼字元所佔位元組數

前言:上一篇文章寫了關於Unicode,以及utf-8、utf-16相關知識。所以本篇博文來驗證在java環境下,字元在不同編碼下所佔的字計數。 測試程式碼如下: package string; public class CharByteTes

將UCS-2 Little Endian(即 utf-16)編碼的txt檔案批量轉化為utf-8編碼(python)

折騰了好久,終於搞定了。參考連結:python使用codecs模組進行檔案操作-讀寫中英文字元 - CSDN部落格 http://blog.csdn.net/chenyxh2005/article/details/72465758#t0程式碼:import os import

Javascript中的string型別使用UTF-16編碼

在JavaScript中,所有的string型別(或者被稱為DOMString)都是使用UTF-16編碼的。 MDN DOM

關於編碼之一:Unicode/UTF-8/UTF-16/UTF-32

規則 系統默認 標記 大小端 post mark 編碼方式 一位 end 1.關於編碼,繞不開下面這些概念 ①Unicode/UTF-8/UTF-16/UTF-32 ②大小端字節序(big-endian/little-endian) ③BOM(Byte Order M

xml中1位元組的UTF-8序列的位元組1無效([字元編碼]Invalid byte 1 of 1-byte UTF-8 sequence終極解決方案)

  xml中1位元組的UTF-8序列的位元組1無效([字元編碼]Invalid byte 1 of 1-byte UTF-8 sequence終極解決方案) 專案本地執行是ok的,但是釋出到線上伺服器就一直報錯,說什麼   Error

徹底搞懂字元編碼(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)

最近有一些朋友常問我一些亂碼的問題,和他們交流過程中,發現這個編碼的相關知識還真是雜亂不堪,不少人對一些 知識理解似乎也有些偏差,網上百度,google的內容,也有不少以訛傳訛,根本就是錯誤的(例如說 unicode編碼是兩 個位元組),各種軟體讓你選擇編碼的時候,常

ASCII,Unicode,UTF-8,UTF-16,ANSI字元編碼比較

標準ASCII,其最高位(b7)用作奇偶校驗位。 擴充套件ASCII 字元是從128到255(0x80-0xff)的字元。 擴充套件ASCII不再是國際標準。 ASCII太短,肯定不能作為編碼實現方案,但是可以用其作為一部分。 Unicode也是編碼方式不是實現方式,win

常見的字元編碼UTF-8、UTF-16UTF-32

字符集 字符集為每個字元分配了一個唯一的編號,通過這個編號就能找到對應的字元。在程式設計過程中我們經常會使用字元,而使用字元的前提就是把字元放入記憶體中,毫無疑問,放入記憶體中的僅僅是字元的編號,而不是真正的字元實體。 如何才能將字元編號放入記憶體中呢? 對於

Java_字元編碼(Unicode、UTF-8、UTF-16

首先看一下下面的程式(測試英文和中文在Unicode、UTF-8、UTF-16這三種編碼下,一個字元佔幾個位元組) System.out.println("a(Unicode) :" + "a".getBytes("Unicode").length)

字串轉int:處理8,10,16進位制以及處理無效字元

字串轉int函式: 函式名:Myatoi(*str) 功能:將一串字串轉成int整形數字 注意事項: 1.int型最大取值範圍:2147483647,int型佔4位元組,即4*8 = 32位二進位制,整數在二進位制中用原碼錶示即可,第一位為符號位0表示正數,即:01111111 11

python 之編碼轉換 unicode, utf-8, utf-16, GBK

GB 碼,全稱是GB2312-80《資訊交換用漢字編碼字符集基本集》,1980年釋出,是中文資訊處理的國家標準,在大陸及海外使用簡體中文的地區(如新加坡等)是強制使用的唯一中文編碼。P- Windows3.2和蘋果OS就是以GB2312為基本漢字編碼, Windows 95/98則以GBK為基本漢字編碼

Utf-8編碼處理(解決c++/MFC下的亂碼問題)

標頭檔案引用:#include <string> void CGetpostDlg::UTF8toANSI(CString &strUTF8) { USES_CONVERSION; char * strutf8 = W2A(strUTF8); //

JavaScript編碼轉換(UTF-8、UTF-16

        JavaScript的字元用UTF16進行編碼,網頁常用的編碼是UTF8或者GB2312,在不涉及到字串位元組操作時,JavaScript編碼和網頁編碼即使不一致也可以使用。但是當進行諸如Base64涉及位元組之類的操作,尤其是有中文字元時,JavaScri

設定cmd為utf-8編碼並通過批處理方式加快開機啟動事項

加快啟動事項 因為每天開機後總是會啟動某些應用,做著重複的事情,所以就想著自動化處理一下。在Windows下面自然就會想到批處理bat,就在網上找了一下,下面是最終採用的版本: echo 正

UTF-16漢字編碼

    UTF-16是Unicode的一種字元編碼。UTF是 Unicode TransferFormat,意為Unicode轉換格式。UTF-16使用兩個位元組來編碼一個字元,例如字母"a"的編碼是0x0061,漢字"經"的編碼是0x7ECF。Java就是使用UTF-1

UTF-8、UTF-16UTF-32編碼的相互轉換

相關文章 最近在考慮寫一個可以跨平臺的通用字串類,首先需要搞定的就是編碼轉換問題。 vs預設儲存程式碼檔案,使用的是本地code(中文即GBK,日文即Shift-JIS),也可以使用帶BOM的UTF-8。 gcc則是UTF-8,有無BOM

python處理utf-16 le格式中文文字

python做中文什麼的,編碼一向很頭疼,當然,比c++神馬的強多了 最近收到的一批文字資料是用utf-16-LE編碼格式的,這個格式轉換成utf8然後存入mongoDB是必須的步驟 找了些資料,分享一下轉碼方法 python有個包codecs # 解碼utf-16