48 次浏览【转载需注明来源】
博客作者:【激荡】
想把字符串转换成字节集,字符代码转字符等问题
用循环可以把字符串转成字节,但碰到汉字就乱码。
定义函数 字符串转UTF8字节(字符串数据) { 变量 utf8字节 = []; 循环 (变量 索引 = 0; 索引 < 字符串数据.长度; ) { 变量 Unicode值 = 字符串数据.取Unicode值(索引); 如果 (Unicode值 < 0x80) { utf8字节.添加成员(Unicode值); 索引++; } 否则 如果 (Unicode值 < 0x800) { utf8字节.添加成员(0xc0 | (Unicode值 >> 6), 0x80 | (Unicode值 & 0x3f)); 索引++; } 否则 如果 (Unicode值 >= 0xd800 && Unicode值 <= 0xdbff /* high surrogate */) { // UTF-16 surrogate pair 变量 Unicode值匹配 = Unicode值; Unicode值 = 0x10000 + ((Unicode值匹配 - 0xd800) << 10); 变量 下一个Unicode值 = 字符串数据.取Unicode值(++索引); 如果 (下一个Unicode值 < 0xdc00 || 下一个Unicode值 > 0xdfff) { // Invalid surrogate pair 抛出异常 新建对象 Error("遇到无效的值"); } Unicode值 |= 下一个Unicode值 - 0xdc00; utf8字节.添加成员(0xf0 | (Unicode值 >> 18), 0x80 | ((Unicode值 >> 12) & 0x3f), 0x80 | ((Unicode值 >> 6) & 0x3f), 0x80 | (Unicode值 & 0x3f)); } 否则 { utf8字节.添加成员(0xe0 | (Unicode值 >> 12), 0x80 | ((Unicode值 >> 6) & 0x3f), 0x80 | (Unicode值 & 0x3f)); 索引++; } } 返回 utf8字节; } 定义函数 UTF8字节转字符串(bytes) { 返回 新建对象 TextDecoder("utf-8").decode(新建对象 无符号8位整型数组(bytes));//在较新的浏览器中有该API,这里封装成一个名叫UTF8字节转字符串的方法 } 变量 字符串数据 = "你好,世界!"; 变量 UTF8字节 = 字符串转UTF8字节(字符串数据); 调试输出(UTF8字节); 字符串数据 = UTF8字节转字符串(UTF8字节); 调试输出(字符串数据); // 输出:"你好,世界!"
上述代码是字符串和UTF8字节数组的相互转换
不能恶意举报,否则进行封号处理!
测试账号
快码FOF编程 Time: 2024-02-23 11:09:06
评论ID
上述代码是字符串和UTF8字节数组的相互转换