java数据

时间:2023-03-09 16:08:24
java数据

因为曾经干了啥事儿,才印象特别深刻。

将byte存入String的后果

String res = “”;

res += (char) 0xc3;

byte[] bytes = res.getBytes();

      这是曾经的一部分程序。习惯使用String,并在之前并没有遇到任何错误。但是这次遇到了。

bytes里面不止一个byte,而是两个。这导致“数据异常”。

       原来,java中的char是2个字节。如果小于256,在获取字符串字节时,就被认为是一个byte,但是大于时,就被识别为2个字节。

       改进:后来,学习了解了ByteArrayOutputStream,用它来存取具有扩张性的字节数组,再好不过。

ByteArrayOutputStream输出的编码问题

ByteArrayOutputStream stream = new ByteArrayOutputStream();

……

stream.toString();

         一般情况下,直接toString没有什么问题。但是,一旦byte位上超过127时,就可能出现多字节现象。

问题: widows运行环境默认编码gbk。运行toString时,原本0xc3一个字节,编程了3个字节的内容。

处理:指定编码——stream.toString(“utf-8”);

好处:指定了编码后,就保证了唯一性。除非系统不支持,否则都不会有不同的结果出来。