黑马程序员技术交流社区

标题: 程序执行过程中乱码问题 [打印本页]

作者: fyg408224345    时间: 2015-6-18 20:51
标题: 程序执行过程中乱码问题
不多说,直接上代码:
public static void main(String[] args) {
                byte[] bytes = {41,6,75,3,56,6,22,1};
                String str = new String(bytes);
                System.out.println(str);
}

执行完结果是这样的:


我想问一下为什么出现这个啊?什么问题?我是用eclipse运行的

作者: qq10763582    时间: 2015-6-18 20:55
涉及到编码问题!你byte数组中的数值是你自己随意写的吧?这些字节在转换字符时,编码表无法识别导致的!
作者: fyg408224345    时间: 2015-6-18 21:00
qq10763582 发表于 2015-6-18 20:55
涉及到编码问题!你byte数组中的数值是你自己随意写的吧?这些字节在转换字符时,编码表无法识别导致的! ...

好吧, 我改一改试试看。谢谢哦
作者: fyg408224345    时间: 2015-6-18 21:03
fyg408224345 发表于 2015-6-18 21:00
好吧, 我改一改试试看。谢谢哦

刚改了,全部换成10以内的数了,还是不行啊
作者: 繁华落幕    时间: 2015-6-18 21:24
你把数组中的元素  想直接用string输出?你要想打印输出数组的内的 还不如直接在输出语句里直接写 bytes[ 角标 ]呢,要不就用 charArray方法   然后在输出string字符串
作者: fyg408224345    时间: 2015-6-18 21:30
繁华落幕 发表于 2015-6-18 21:24
你把数组中的元素  想直接用string输出?你要想打印输出数组的内的 还不如直接在输出语句里直接写 bytes[ 角 ...

不是,我是练习String类的构造方法。所以才那样写的
作者: 繁华落幕    时间: 2015-6-18 21:35
fyg408224345 发表于 2015-6-18 21:30
不是,我是练习String类的构造方法。所以才那样写的

但是  你写了构造方法   你不还得写个方法把这个调用出来么  哪有直接把数组用string打印输出来的  你可以找找api string那部分  
作者: cyd1058    时间: 2015-6-18 21:38
编码有问题
作者: cyd1058    时间: 2015-6-18 21:40
编码有问题
作者: xtf    时间: 2015-6-18 21:55
并不是乱码,你把byte[] bytes = {41,6,75,3,56,6,22,1};改为byte[] bytes = { 97, 100, 102, 101 };试试。你的byte数组里面的数转化成字符后都是未知码。
作者: l李伟    时间: 2015-6-18 22:06
我只是路过
作者: xtf    时间: 2015-6-18 22:13
fyg408224345 发表于 2015-6-18 21:03
刚改了,全部换成10以内的数了,还是不行啊

byte数要大于32编码才没有问题  你输入大于32的数字试试

作者: xtf    时间: 2015-6-18 22:15
fyg408224345 发表于 2015-6-18 21:03
刚改了,全部换成10以内的数了,还是不行啊

byte数要大于32编码才没有问题  你输入大于32的数字试试
作者: fecuznmn    时间: 2015-6-18 22:21
查查ascii码表你就懂了。
作者: fyg408224345    时间: 2015-6-19 11:38
xtf 发表于 2015-6-18 21:55
并不是乱码,你把byte[] bytes = {41,6,75,3,56,6,22,1};改为byte[] bytes = { 97, 100, 102, 101 };试试。 ...

好了,重新换了数字试了一下。行了。谢谢啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2