中易网

java 转码成中文 绝对正确

答案:2  悬赏:30  
解决时间 2021-03-08 08:25
以前在网上看到转码的问题 全是错误的 没有一个是正确 为此感到很不满
public static String changeCharset(String str, String newCharset)
{
if (str != null) {
byte[] bs = str.getBytes("US-ASCII");
return new String(bs, newCharset);
}
return null;
}
在网上看到的全是这种方法,绝对转码不成功,因为如果传输进来是ascii,是一个字节为单位的,你如果要想打印成中文,必须两个字节两个字节地取比如: hah中国 这里一共3+4共7个字符,而如果你按ascii或者iso8859解码成单字节,再转换成gbk,gb2312,utf-8,绝对不正确,当你取到(hah中国)第四个字符的时候,就会出来乱码,因为你取了“中”字的半个字节
怎么解决呢,我直接将字符打印在控制台上,中文却可以照原样输出,呵呵,我就奇怪了,研究了下sun自己是怎么做到的,于是找出来下面的代码,绝对可以转码,你想怎么转就怎么转
char cbuf[] = null;
cbuf = new char[tmp.length()];
tmp.getChars(0, tmp.length(), cbuf, 0);
cbuf这就是大家想要的中文,再一次new String(cbuf);中文就出来了
错了找sun公司,希望以后不正确的,不要乱贴在网上,自己多试试,确保正确再贴
最佳答案
首先你得知道你传进来的是什么编码.然后再转换.

通常出现乱码都是 ISO-8859
你只需要转换成 UTF-8 就行了. 或者GB2312 GBK.

return new String(object.getBytes("ISO-8859"),"UTF-8")
全部回答
string str = new string("暗示大家".getbytes(),"utf-8"); 重新用utf-8编码 或者用 urldecoder.decode("xxxxxx", "utf-8");重新用utf-8解码 望采纳,谢谢
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在邮政银行办储蓄卡。要本人去吗
二战之后经历实战最多的是哪个型号的战机
香满园地址在哪,我要去那里办事
小红豆、薏仁、山药、伏苓搭配功效
坦克世界打比赛为啥要用T1啊?
招商银行铂金卡有些什么好处
女孩封闭式学校哪里有
想知道: 南京市 从尧化门到经天路怎么坐公交
我是淘宝卖家,现在店铺升成一钻返回普通店铺
迪欧咖啡同泰店地址有知道的么?有点事想过去
苹果的名言
6字战队名字霸气的不带符号的
山东省400分左右大学 我是吉林考生
炎亚纶《纪念日》MV里女主角是谁
济南到莱阳长途汽车时间以及价钱?
推荐资讯
我一个人去济宁工作,请问在济宁市中区租一套
联想系列H5新圆梦玩英雄联盟行吗?
钢琴斗牛士之歌应该用什么感觉弹
南方的丘陵为什么多石?
冒险岛怎么用现金换金币啊?
求JIMMY ORANGE眼镜的官方地址,我查了一下,
生化危机启示录我下了个修改器,可是不能用求
宏才酒业地址有知道的么?有点事想过去
导线的的导电性能包含___ ____ _____?
滋补鸡血汤地址在什么地方,想过去办事
有什么经典的砺志的歌曲
巜南京条约》包括赔款,割地,通商,其中割地指
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?