js ---str转utf8与utf-8转str
来源:互联网 发布:手机图文转换软件 编辑:程序博客网 时间:2024/06/03 16:08
1、字符编码的原理
http://blog.csdn.net/xiaolei1021/article/details/52093706
1、 // UCS-2和UTF8都是unicode的一种编码方式
// js代码中使用的是UCS-2编码
2、
3、str2utf8:
1)字符转USC-2,用charCodeAt()
2)如英文的话,直接返回字符str.charAt(i);//返回指定位置的字符
3)如中文的话,根据Unicode、utf-8编码方式的编码规则图,用String.fromCharCode转换
UCS-2转UTF-8
function str2utf8(str) { // UCS-2和UTF8都是unicode的一种编码方式 // js代码中使用的是UCS-2编码 var code; var utf = ""; for (var i = 0; i < str.length; i++) { code = str.charCodeAt(i);//返回每个字符的Unicode 编码 if (code < 0x0080) { utf += str.charAt(i);//返回指定位置的字符 } else if (code < 0x0800) { utf += String.fromCharCode(0xC0 | ((code >> 6) & 0x1F)); utf += String.fromCharCode(0x80 | ((code >> 0) & 0x3F)); } else if (code < 0x10000) { utf += String.fromCharCode(0xE0 | ((code >> 12) & 0x0F)); utf += String.fromCharCode(0x80 | ((code >> 6) & 0x3F)); utf += String.fromCharCode(0x80 | ((code >> 0) & 0x3F)); } else { throw "不是UCS-2字符集" } } return utf; }
4、utf82str:UTF-8转USC-2
function utf82str(utf) { var str = ""; var tmp; for(var i = 0; i < utf.length; i++) { // 英文字符集合 if(utf.charCodeAt(i) >> 7 == 0x00) { str += utf.charAt(i); continue; } // 其他字符集 else if(utf.charCodeAt(i) >> 5 == 0x06) { tmp = ((utf.charCodeAt(i + 0) & 0x1f) << 6) | ((utf.charCodeAt(i + 1) & 0x3f) << 0); str += String.fromCharCode(tmp); i++; continue; } // 中文字符集 else if(utf.charCodeAt(i) >> 4 == 0x0e) { tmp = ((utf.charCodeAt(i + 0) & 0x0f) << 12) | ((utf.charCodeAt(i + 1) & 0x3f) << 6) | ((utf.charCodeAt(i + 2) & 0x3f) << 0); str += String.fromCharCode(tmp); i += 2; continue; } // 其他字符集 else if(utf.charCodeAt(i) >> 3 == 0x1f) { tmp = ((utf.charCodeAt(i + 0) & 0x07) << 18) | ((utf.charCodeAt(i + 1) & 0x3f) << 12) | ((utf.charCodeAt(i + 2) & 0x3f) << 6); ((utf.charCodeAt(i + 3) & 0x3f) << 0); str += String.fromCharCode(tmp); i += 3; continue; } // 非法字符集 else { throw "不是UTF-8字符集" } } return str; }
阅读全文
0 0
- js ---str转utf8与utf-8转str
- python str bytes unicode utf-8 学习
- QDateTime转str格式
- python str转dict
- python str转dict
- python unicode转str
- Python List转str
- python str转bytes
- str
- str()
- str
- str
- str
- strlen(str)与str.length()
- str.equals("")与("").equals(str)
- char*str与char str[]
- c语言hex转str和str转hex
- char p转CString str
- SQL Server 客户端连接的问题
- 典型例题
- cmd里面的标识?
- SIFT算法学习总结
- POJ1300 欧拉回路 解题报告
- js ---str转utf8与utf-8转str
- 推荐系统评测指标—精准率(Precision)、召回率(Recall)、F值(F-Measure)
- 并查集小练
- java集成rabbitmq发消息
- ORACLE数据库-PL/SQL程序--基础定义和游标的使用
- LeetCode
- java 解决double运算精度问题(使用BigDecimal )
- C++对象模型之内存布局三
- Request对象(获取请求参数的方法、表单格式、防盗链、请求重定向)