js 中漢字和Unicode 互轉
首先,什麼是Unicode,百科知識:Unicode(統一碼、萬國碼、單一碼)是電腦科學領域裡的一項業界標準,包括字符集、編碼方案等;Unicode 是為了解決傳統的字元編碼方案的侷限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位制編碼,以滿足跨語言、跨平臺進行文字轉換、處理的要求。
balabala一堆,其實可以舉個例子簡單的理解一下:秦國一統六國後,統一貨幣,度量衡等,創造一個統一的標準,所有秦的領土範圍內都使用這個標準,標準統一後,各種雜七雜八混亂的問題也就隨著解決了,然後走向人生巔峰,迎娶xxx云云。 。。
Unicode也一樣,它把所有的語言(中文、英文、韓文...)都納入到一套編碼中,統一所有的文字編碼,這樣就解決了中國用中國定製的編碼,日本用日本定製的編碼....這種混亂的現象,這樣就不會出現亂碼的現象了。Unicode中一般用兩個位元組(16bit)表示一個字元,就算原有的英文編碼也從單位元組變成了雙位元組,但是影響不大,把高位位元組置0就完事了(如有錯請幫我評論指出,謝謝!)
Unicode編碼取值: 0 - 65535 (0x0000 - 0xFFFF),
js 中Unicode是以十六進位制程式碼外加開頭 \u 表示的字串,例如: 愛 // js中表示為 \u7231
說一下js中的String物件的兩個方法:
//返回字串某一下標處的Unicode編碼;index從0開始 // 如果取負數 或者 >=字串長度 的值則返回NAN stringObject.charCodeAt(index) : ,如果 例如: "愛".charCodeAt(0) // 輸出29233 // numX是unicode編碼(十進位制型別) //返回一個或多個Unicode編碼對應的漢字 String.fromCharCode(numX,numX,...,numX): 例如:String.fromCharCode(29233) //輸出‘愛’
好了,既然要把漢字轉換成Unicode編碼,總得知道漢字的Unicode編碼範圍吧,不然怎麼判斷呢
簡體漢字: \u4e00-\u9fa5
// 判斷字元是否為漢字,
function isChinese(s){
return /[\u4e00-\u9fa5]/.test(s);
}
js中漢字轉Unicode編碼:
// 把字串中的漢字轉換成Unicode function ch2Unicdoe(str){ if(!str){ return; } var unicode = ''; for (var i = 0; i < str.length; i++) { var temp = str.charAt(i); if(isChinese(temp)){ unicode += '\\u' + temp.charCodeAt(0).toString(16); } else{ unicode += temp; } } return unicode; } var str = 'love中國你好'; console.info(ch2Unicdoe(str)) // love\u4e2d\u56fd\u4f60\u597d
js中Unicode編碼 轉漢字:
// 方法一
// js中的方法unescape, 對通過escape()方法編碼的字串進行解碼,
// 通過找形如: %xx 或者 %xxxx 的字元序列,用Unicode字元\u00xx 和 \uxxxx替換這樣的字元序列進行解碼
function unescapeF(str){
return unescape(str.replace(/\\/g, "%"))
}
此方法現在ECMAScript v3之後已不能使用,所以不推薦使用
// 方法2, 遍歷字串
function unicode2Ch(str){
if(!str){
return;
}
// 控制迴圈躍遷
var len = 1;
var result = '';
// 注意,這裡迴圈變數的變化是i=i+len 了
for (var i = 0; i < str.length; i=i+len) {
len = 1;
var temp = str.charAt(i);
if(temp == '\\'){
// 找到形如 \u 的字元序列
if(str.charAt(i+1) == 'u'){
// 提取從i+2開始(包括)的 四個字元
var unicode = str.substr((i+2),4);
// 以16進製為基數解析unicode字串,得到一個10進位制的數字
result += String.fromCharCode(parseInt(unicode,16).toString(10));
// 提取這個unicode經過了5個字元, 去掉這5次迴圈
len = 6;
}
else{
result += temp;
}
}
else{
result += temp;
}
}
return result;
}
console.info("unicode2Ch:"+ unicode2Ch("love\u4e2d\u56fd1234\u4f60\u597d")) //love中國1234你好
最後,來看一下js中 URI 加密和解密的方法:
decodeURI(URIstring): //可對 encodeURI() 函式編碼過的 URI 進行解碼
// 對字串進行URI 編碼,該方法不會對 ASCII 字母和數字進行編碼
// 也不會對具有特殊含義的 ASCII 標點符號,如: :;/?:@&=+$,# 進行編碼
// 也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( )
encodeURI(URIstring)
// 例如
var test1="http://www.w3school.com.cn/My first/?中國"
encodeURI(test1) //http://www.w3school.com.cn/My%20first/?%E4%B8%AD%E5%9B%BD
decodeURI(test1) //http://www.w3school.com.cn/My first/?中國
如果要對比如 ? 和 # 的 字元進行URI 編碼,則應當使用 encodeURIComponent() 方法分別對各元件進行編碼。
decodeURIComponent(URIstring)://對encodeURIComponent() 函式編碼的 URI 進行解碼
//不會對 ASCII 字母和數字進行編碼
//也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( )
//但是其他字元,比如 :;/?:@&=+$,# 這些用於分隔 URI 元件的標點符號),都會被由一個或多個十六進位制的轉義序列替換
encodeURIComponent(URIstring)
例如:
var test1="http://www.w3school.com.cn/My first/?中國"
encodeURIComponent(test1) //http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F%3F%E4%B8%AD%E5%9B%BD
decodeURIComponent(test1) //http://www.w3school.com.cn/My first/?中國
相關推薦
js 中漢字和Unicode 互轉
首先,什麼是Unicode,百科知識:Unicode(統一碼、萬國碼、單一碼)是電腦科學領域裡的一項業界標準,包括字符集、編碼方案等;Unicode 是為了解決傳統的字元編碼方案的侷限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位制編碼,以滿足跨語言、跨
C#與unity中base64string和圖片互轉
C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; using
一個簡單方便的ANSI和UNICODE互轉方法
最近多次使用_bstr_t這個封裝BSTR類,發現微軟封裝得還挺不錯的,能很簡單方便的ANSI和UNICODE互轉。 VC6.0預設是沒新增_bstr_t 類的支援標頭檔案comdef.h,還需要用#include <comdef.h>新增標頭檔案。 _bstr_
android中html和text互轉
html轉text mEditText = (EditText) findViewById(R.id.et); mEditText.setText(Html.fromHtm
Java開發中POJO和JSON互轉時如何忽略隱藏欄位
![](https://img2020.cnblogs.com/other/1739473/202102/1739473-20210203103534561-1966374104.png) ## 1. 前言 在**Java**開發中有時候某些敏感資訊我們需要遮蔽掉,不能被消費這些資料的客戶端知道。通常情況
js中json物件和string互轉
json轉string的方法 /** * json物件轉字串形式 */ function json2str(o) { var arr = []; var fmt = function(s) { if (typeof s ==
【2017-05-21】WebForm跨頁面傳值取值、C#服務端跳轉頁面、 Button的OnClientClick屬性、Js中getAttribute和超鏈接點擊彈出警示框。
代碼 height delet update size 內存 客戶 bar win 一、跨頁面傳值和取值: 1、QueryString - url傳值,地址傳值 優缺點:不占用服務器內存;保密性差,傳遞長度有限。 通過跳轉頁面路徑進行傳值,方式: href="地址?ke
js中post中文參數轉碼和解碼
OS AR 轉碼 encode encodeuri 前端 部分 進行 code 作為基礎知識和血淋林的教訓,前端一定要記得post請求時將參數中帶有中文的部分進行轉碼!! var str=‘宋宇·特弱夫斯基‘; //轉碼: encodeURI(encodeURI(str))
dlib中的image和opencv中的image格式互轉
//dlib::array2d is an image already, you can use it for any dlib's image functions //load image: dlib::array2d<dlib::rgb_pixe
Unicode編碼和中文互轉(JAVA實現)
//中文轉Unicode public static String gbEncoding(final String gbString) { //gbString = "測試" char[] utfBytes = gbString.toCharArray();
js和java中字元和unicode編碼的轉化
一般來說,良好的程式設計習慣要求在程式碼裡儘量不出現中文,一個是國際化問題,即同一份程式碼可能要滿足不同語言的顯示,還一個就是可能產生亂碼問題,不同的程式設計師用不同的IDE匯入這份程式碼可能使用了不同的預設編碼。 然而有些場景是必須保持中文的,比如讀取某個帶樣式文字的字型
C char/wchar_t之間的互轉 多位元組(MultiByte)和寬字元(Unicode)互轉
wchar_t wstr[100]=L"wstr"; char str[100]; wcstombs(str,wstr,100);//寬字元轉多位元組 mbstowcs(wstr,str,100);//多位元組轉寬字元 也可以使用:MultiByteToWide
C中字串UTF-8和GB2312互轉
在程式設計過程中需要對字串進行不同的轉換,特別是Gb2312和Utf-8直接的轉換。在幾個開源的魔獸私服中,很多都是老外開發的,而暴雪為了能 夠相容世界上的各個字符集也使用了UTF-8。在中國使用VS(VS2005以上版本)開發基本都是使用Gb2312的Unicode字符
js 物件型陣列和字串互轉
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head&
char * 和string互轉,陷阱:char*中包含較多的'\0'
一般來說,char *和string能夠比較容易的進行相互轉換,比如char *轉換成string,可以直接轉,如下:-Cpp 程式碼1char *a = "abcdefg";2std::string
【程式設計筆記】UNICODE和UTF-8和ASCII互轉
最近維護一個專案時發現,MFC的Cstring型別寫到ini文字時,出現了亂碼。因為寫入的資料帶有類似的特殊字元❀,由於ini預設建立的編碼格式為GBK編碼格式,但是這個特殊字元在預設的GBK編碼下是不能識別的,會以?的形式存在。那這個特殊字元的編碼是什麼,暫時還沒搞清楚。但
JS中isPrototypeOf 和hasOwnProperty 的區別
另一個 strong 是否 指定 不同 名稱 功能 成員 eof 1、isPrototypeOf isPrototypeOf是用來判斷指定對象object1是否存在於另一個對象object2的原型鏈中,是則返回true,否則返回false。 格式如下: object1.is
js中undefined和null的區別
常常 html exist tex 輸出 output 為什麽 hive 存在 轉自:http://www.cnblogs.com/eastday/archive/2010/03/03/1677324.html 在JavaScript中存在這樣兩種原始類型:Null與Und
js中eval()和$.parseJSON()的區別
16px 異常 comment 而不是 str on() ajax 鏈接 強制 之前自己一直對ajax不是特別的熟悉,所以一般都很少用這個去寫功能,但是最近這個項目中用到了,用ajax異步傳數據,json傳數據這個時候就需要去解析傳過來的數據了,eval()和$.parse
wchar_t* 和char* 互轉
multi pan com nic return compose ide acp 轉化 //將單字節char*轉化為寬字節wchar_t* wchar_t* AnsiToUnicode(const char* szStr){ int nLen = MultiByte