java 的DataOutputStream 的 writeBytes(String s) 方法
|
java 的DataOutputStream 的 writeBytes(String s) 方法在向输出流写入中文字符时会出现问题。该方法的源代码如下:
public final void writeBytes(String s) throws IOException { int len = s.length(); for (int i = 0 ; i < len ; i++) { out.write((byte)s.charAt(i)); } incCount(len); } 举个例子,以字符串"你好"作为参数输入,(byte)s.charAt(i) 这句就会导致问题,因为java里的char类型是16位的,一个char可以存储一个中文字符,在将其转换为 byte后高8位会丢失,这样就无法将中文字符完整的输出到输出流中。所以在可能有中文字符输出的地方最好先将其转换为字节数组,然后再通过write(byte[] b)方法输出。例, String s = "你好"; write(s.getBytes()); |
本文详细解释了Java DataOutputStream的writeBytes(Strings)方法在处理中文字符时存在的问题,并提供了正确的解决方案。通过将字符串转换为字节数组后再使用write(byte[]b)方法输出,可以确保中文字符完整无误地被输出。
47万+

被折叠的 条评论
为什么被折叠?



