gpt4 book ai didi

java - 字节到字符串| java

转载 作者:行者123 更新时间:2023-11-29 10:19:24 26 4
gpt4 key购买 nike

我有一个要求,我必须在输出流上写一些文本,然后使用输入流在其他地方读回该文本。

现在要写入输出,我使用 string.getByte() 将其转换为字节数组。现在在读取时,字符串是使用构造函数 String(byte[]) 形成的。

话虽如此,这里的问题是读取的字符串不是我希望看到的。虽然所有字母数字字符都按原样读取,但对于写入字符串中的其他特殊字符,它们的 ASCII 值会在前面加上 % 符号。

即使是最普通的事情,比如将字符串转换为字节数组,然后重建字符串,也像这样

    private stringToByte(){
String data="\"X=Y;Z=A;B=C;\""
byte[] byteArray=data.getByte();
String readData=new String(byteArray);
System.out.println("data:"+readData);
}

产生相同的结果。现在生成的字符串看起来像

   data:%22X=Y%3BZ=A%3BB=C%3B%22

现在我最初的假设是编码是使用默认字符集完成的,所以它应该是编码。但即使在同一 JVM 中的同一台机器上,这种行为也很明显。

我尝试使用

    String readData=new String(byteArray,"diffent character set name");

但是,正如它本应发生的那样,它加剧了这种情况,因为我随机尝试了不同的字符集名称。

希望你能用它来阻止我的厄运。你能指出我在这个计划中变得愚蠢的地方吗?

非常非常感谢! :)

最佳答案

像这样使用 Charset.forName(...)。您还可以查询可用的字符集,如下例所示。

String data = "\"X=Y;Z=A;B=C;\"";
byte[] byteArray = data.getBytes(Charset.forName("ISO-8859-1"));
String readData = new String(byteArray, Charset.forName("ISO-8859-1"));
System.out.println("data:" + readData);

for (String name : Charset.availableCharsets().keySet()) {
System.out.println(name);
}

关于java - 字节到字符串| java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9686321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com