根据双字节码显示文本

OPPPPOP 2014-05-14 11:33:03
Hi各位 Java里有这样的代码可以将-76,-42显示成汉字“粗”
new String(new byte[]{-76,-42})

请教JS类似的方法 急
...全文
288 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
OPPPPOP 2014-05-15
  • 打赏
  • 举报
回复
引用 12 楼 vnvlyp 的回复:
GBK与Unicode转换这里有篇别人写的转换表可以参考 http://bbs.blueidea.com/forum.php?mod=viewthread&tid=2857972
非常感谢您这么有心 开贴分少了 35分聊表谢意
OPPPPOP 2014-05-14
  • 打赏
  • 举报
回复
好 实际上我想要以下Java以Js实现,那个写到new String(bytes)这里不知道该怎么办了 String.fromCharCode在这里应该怎么使用?
public static String decode(String hexStr){
		String[] ah=hexStr.split(",");
		int len=ah.length;
		byte[] bytes=new byte[len];
		for(int i=0,t;i<len;i++){
			t=Integer.parseInt(ah[i],16);
			if(t<128){
				bytes[i]=(byte)t;
			}else{
				t-=256;
				bytes[i+1]=(byte)t;
				t=Integer.parseInt(ah[i+1],16);
				bytes[i]=(byte)(t-256);
				i++;
			}
		}
		return new String(bytes);
	}
System.out.println(decode("a4,b9,20,20,20,20,f2,d0,20,20,20,20,da,c4,20,20,20,20,dd,c8"));
Go 旅城通票 2014-05-14
  • 打赏
  • 举报
回复
自己计算出文字的unicode值,通过String.fromCharCode来生成内容
alert(String.fromCharCode(31895))
vnvlyp 2014-05-14
  • 打赏
  • 举报
回复
花了一下午研究了一下,帮你写了个发在这儿了 http://blog.csdn.net/vnvlyp/article/details/25827999
vnvlyp 2014-05-14
  • 打赏
  • 举报
回复
GBK与Unicode转换这里有篇别人写的转换表可以参考 http://bbs.blueidea.com/forum.php?mod=viewthread&tid=2857972
Go 旅城通票 2014-05-14
  • 打赏
  • 举报
回复
不行就用ajax发送你这种内容到java去,java解码后再返回来给js用也行 java不知道,直接解码你这种内容不知道你怎么得来的,用的什么字符串进行编码的
vnvlyp 2014-05-14
  • 打赏
  • 举报
回复
这个需要一个GBK与Unicode的对照表吧。。
OPPPPOP 2014-05-14
  • 打赏
  • 举报
回复
我迷糊了 弄点代码吧
xuzuning 2014-05-14
  • 打赏
  • 举报
回复
不是无解,而是比较麻烦 你需要把汉字转换成 UCS-2 编码,然后按无符号高位在前短整型读出 这样才能给 String.fromCharCode 用
OPPPPOP 2014-05-14
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
事情没有那么简单 将-76,-42显示成汉字“粗” ,那么这个“粗”是 gbk 编码的 而 js 总是以 unicode 编码处理汉字的
那就是用js无解了啊?
xuzuning 2014-05-14
  • 打赏
  • 举报
回复
事情没有那么简单 将-76,-42显示成汉字“粗” ,那么这个“粗”是 gbk 编码的 而 js 总是以 unicode 编码处理汉字的
OPPPPOP 2014-05-14
  • 打赏
  • 举报
回复
function decode(hexStr){
    var ah=hexStr.split(',');
    var len=ah.length;
    var bytes=[];
    for(var i=0,t;i<len;i++){
        t=parseInt(ah[i],16);
        if(t<128){
            bytes[i]=t;
        }else{
            t-=256;
            bytes[i+1]=t;
            t=parseInt(ah[i+1],16);
            bytes[i]=(t-256);
            i++;
        }
    }
    var s=//怎么操作bytes, 参数hexStr=‘a4,b9,20,20,20,20,f2,d0,20,20,20,20,da,c4,20,20,20,20,dd,c8’ 
    //想return s='工    序    内    容' 这段内容
    return s;
}
OPPPPOP 2014-05-14
  • 打赏
  • 举报
回复
版主大人可能还没理解我的意思 如下
function decode(hexStr){
	var ah=hexStr.split(',');
	var len=ah.length;
	var bytes=[];
	for(var i=0,t;i<len;i++){
		t=parseInt(ah[i],16);
		if(t<128){
			bytes[i]=t;
		}else{
			t-=256;
			bytes[i+1]=t;
			t=parseInt(ah[i+1],16);
			bytes[i]=(t-256);
			i++;
		}
	}
	//var s=bytes.join(','); 这里是测试代码
	//var s=怎么操作bytes得到粗这个字 hexStr是 a4,b9,20,20,20,20,f2,d0,20,20,20,20,da,c4,20,20,20,20,dd,c8 
	//想得到 s="工    序    内    容" 这段内容
	return s;
}
不局限于上面的函数 用其他js方法得出就行 也就是一个function 我输入'a4,b9,20,20,20,20,f2,d0,20,20,20,20,da,c4,20,20,20,20,dd,c8' return '工 序 内 容';
Go 旅城通票 2014-05-14
  • 打赏
  • 举报
回复
alert(String.fromCharCode(31895))//粗
alert('粗'.charCodeAt(0))//31895

87,960

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧