以前在网上看到转码的问题 全是错误的 没有一个是正确 为此感到很不满
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公司,希望以后不正确的,不要乱贴在网上,自己多试试,确保正确再贴
java 转码成中文 绝对正确
答案:2 悬赏:30
解决时间 2021-03-08 08:25
- 提问者网友:℡她的他i☆
- 2021-03-07 19:30
最佳答案
- 二级知识专家网友:最后战士
- 2021-03-07 20:13
首先你得知道你传进来的是什么编码.然后再转换.
通常出现乱码都是 ISO-8859
你只需要转换成 UTF-8 就行了. 或者GB2312 GBK.
return new String(object.getBytes("ISO-8859"),"UTF-8")
通常出现乱码都是 ISO-8859
你只需要转换成 UTF-8 就行了. 或者GB2312 GBK.
return new String(object.getBytes("ISO-8859"),"UTF-8")
全部回答
- 1楼网友:努力只為明天
- 2021-03-07 21:05
string str = new string("暗示大家".getbytes(),"utf-8");
重新用utf-8编码
或者用
urldecoder.decode("xxxxxx", "utf-8");重新用utf-8解码
望采纳,谢谢
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯