getBytes()得到的数组里存的到底是什么?是ASCII吗? getBytes()是按照平台默认编码将字符串转换为为byte[] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 字符串和byte数组存在编码和解码的关系所以两者转换时会根据编码的不同而产生不同的结果若是搞错了编码,那么可能会造成乱码 得到里面的byte[],另外给楼主一点意见,刚开始编程可不用研究那么深,否则会打消你对编程的兴趣,随后你慢慢用多了,见多了其意自现了就。。 哈希值是根据对象的内容(字符串、地址、数字.etc)计算出来的一串数字,也就是说如果两个对象内容相等(A.equals(B)),那么他们的哈希值是一定相等的(A.hashCode()==B.hashCode())。但是反过来是不一定成立的。MD5是一种单向加密算法,加密后的结果是一串16进制的序列。的确你可以把MD5理解为一种hash算法,经加密后的值理解为哈希值。因为对于内容相同的字符串,经MD5加密后的结果是一样的。这属于数据结构的一些基础了,LZ有兴趣可以去了解下,毕竟也是基础。 getByte就是按照默认的编码方式吧字符串转成byte数组。 getByte就是把字符串按照默认的编码方式转成byte数组。他可以带参数 例如getByte("gbk"); getByte("utf-8")等。不同的编码参数获取的byte数组也不一样。具体可以先了解下gbk、utf-8、is08859-1等不同编码。然后你就懂了。 首先,Java 这种编程语言内核是使用 Unicode,Windows 操作系统也是这样的,也就是说它只是记住了一个字符的 Unicode Code Point 数字,这就是这个字符的身份证。其次,当 Java 中一个字符只在内存中使用,“不需要与其它任何外部系统进行数据交换时“是不需要考虑字符集的,这里说的与外部系统交换数据,是指像保存到磁盘上,通过网络发送去这些情况,因为这时我们需要把一个字符的内部 Unicode code point (一般是一个 int 数字)编码成一个 byte[ ] 数组,至少怎么编码就有讲究了,比如:1、很多 byte[ ] 挤在一起对方怎么知道哪个 byte 组成一个汉字,另外几个 byte[ ] 组成另一个汉字呢?2、有没有办法知道传输过程有没有哪个字节出问题了(其它的字节都正确)呢?根据这些不同的目的,我们发现了不同的字符集编码方案,我们经常见到的 UTF-8, GBK, GB18030, GB2312, Big5 之类的就是它们了。所以如果不打算把它们编码成 byte[ ] 发送出去或者从别人发送的 byte [ ] 还原成 String,字符集就是火星人般的旁观者,我们可以无视它。我们说的字符集转换是指把原来以某个字符集编码成的 byte [ ] 转换成另一种字符集编码的 byte[ ],注意是指你收到了 byte [ ] 要转换,如果你手上拿着的是 String 就没啥转换可言。比如一个转换:byte [ ] gbk = /// 从网络中对方发了一段 GBK 编码的 byte [ ] 给我。我们转换成 String:String msg = new String(gbk, "GBK");现在我打算把它发送给另外一个系统,它希望是用 UTF-8 字符集:byte [ ] utf8 = msg.getBytes("UTF-8");socket.getOutputStream().write(utf8, 0, utf8.length); 来一张形象一点的 Unicode 图吧: 简短总结:getBytes() 就如函数名一样,获取一个字符串的 字节数组。建议不要在自己的代码里使用此函数,此函数会使用默认JVM编码(如果未设置,为GBK)建议统一编码UTF-8,然后使用 getBytes("UTF-8")。若统一使用GBK,则换成GBK即可。否则当你把网站代码转移服务器时,会遇到难以预测的问题。 ASCII 是字符编码,最原始的字符编码。一个ASCII字符占一个字节。计算机存储器的最小存储单位也是字节。 要说推荐的做法是使用 UTF-8,你们习惯了用 GBK 是因为你们的软件的客户主要是大陆企业,像我们客户是招商银行,它同时在大陆和香港办业务,这个代码就跑不起来,一会儿它们输入简体,一会儿输入繁体,还有什么葡萄牙文。因此还是按国际化的方法做,将来当你的客户中出现某人非要用一个新华字典上都找不出来的字当名字时你的程序也不需要修改了。我们经常在网上看到一些奇葩的父母就这样给孩子起名字。 [新手]关于开jfilechooser问题 关于构造器的问题 对于Double型的比较然后输出较大值 【求助】关于与运算 JAVA带预编译的模糊查询问题 求助关于在SUN JDK 1.4.2环境下编译的问题! 入门级问题????奇怪 JTextArea怎么初始化显示内容,高分相送!!!! 急死了,java动画问题 jtable 疑问? java代码实现前两个数相加=第三个,只使用一次递归的谁能帮我实现 java 程序cpu占用率 内存使用
所以两者转换时会根据编码的不同而产生不同的结果
若是搞错了编码,那么可能会造成乱码
哈希值是根据对象的内容(字符串、地址、数字.etc)计算出来的一串数字,也就是说如果两个对象内容相等(A.equals(B)),那么他们的哈希值是一定相等的(A.hashCode()==B.hashCode())。但是反过来是不一定成立的。MD5是一种单向加密算法,加密后的结果是一串16进制的序列。的确你可以把MD5理解为一种hash算法,经加密后的值理解为哈希值。因为对于内容相同的字符串,经MD5加密后的结果是一样的。
这属于数据结构的一些基础了,LZ有兴趣可以去了解下,毕竟也是基础。
他可以带参数 例如getByte("gbk"); getByte("utf-8")等。不同的编码参数获取的byte数组也不一样。
具体可以先了解下gbk、utf-8、is08859-1等不同编码。然后你就懂了。
其次,当 Java 中一个字符只在内存中使用,“不需要与其它任何外部系统进行数据交换时“是不需要考虑字符集的,这里说的与外部系统交换数据,是指像保存到磁盘上,通过网络发送去这些情况,因为这时我们需要把一个字符的内部 Unicode code point (一般是一个 int 数字)编码成一个 byte[ ] 数组,至少怎么编码就有讲究了,比如:
1、很多 byte[ ] 挤在一起对方怎么知道哪个 byte 组成一个汉字,另外几个 byte[ ] 组成另一个汉字呢?
2、有没有办法知道传输过程有没有哪个字节出问题了(其它的字节都正确)呢?根据这些不同的目的,我们发现了不同的字符集编码方案,我们经常见到的 UTF-8, GBK, GB18030, GB2312, Big5 之类的就是它们了。所以如果不打算把它们编码成 byte[ ] 发送出去或者从别人发送的 byte [ ] 还原成 String,字符集就是火星人般的旁观者,我们可以无视它。我们说的字符集转换是指把原来以某个字符集编码成的 byte [ ] 转换成另一种字符集编码的 byte[ ],注意是指你收到了 byte [ ] 要转换,如果你手上拿着的是 String 就没啥转换可言。比如一个转换:byte [ ] gbk = /// 从网络中对方发了一段 GBK 编码的 byte [ ] 给我。
我们转换成 String:
String msg = new String(gbk, "GBK");
现在我打算把它发送给另外一个系统,它希望是用 UTF-8 字符集:
byte [ ] utf8 = msg.getBytes("UTF-8");socket.getOutputStream().write(utf8, 0, utf8.length);
建议不要在自己的代码里使用此函数,此函数会使用默认JVM编码(如果未设置,为GBK)
建议统一编码UTF-8,然后使用 getBytes("UTF-8")。若统一使用GBK,则换成GBK即可。
否则当你把网站代码转移服务器时,会遇到难以预测的问题。
计算机存储器的最小存储单位也是字节。