有没有办法将Java转换String为byte[](不是盒装Byte[])?
在尝试这个:
System.out.println(response.split("\r\n\r\n")[1]);
System.out.println("******");
System.out.println(response.split("\r\n\r\n")[1].getBytes().toString());
Run Code Online (Sandbox Code Playgroud)
而我正在获得单独的输出.无法显示第一个输出,因为它是一个gzip字符串.
<A Gzip String>
******
[B@38ee9f13
Run Code Online (Sandbox Code Playgroud)
第二个是地址.有什么我做错了吗?我需要将结果输入byte[]到gzip解压缩程序中,如下所示.
String decompressGZIP(byte[] gzip) throws IOException {
java.util.zip.Inflater inf = new java.util.zip.Inflater();
java.io.ByteArrayInputStream bytein = new java.io.ByteArrayInputStream(gzip);
java.util.zip.GZIPInputStream gzin = new java.util.zip.GZIPInputStream(bytein);
java.io.ByteArrayOutputStream byteout = new java.io.ByteArrayOutputStream();
int res = 0;
byte buf[] = new byte[1024];
while (res >= 0) {
res = gzin.read(buf, 0, buf.length);
if (res > 0) {
byteout.write(buf, 0, res);
}
}
byte uncompressed[] = …Run Code Online (Sandbox Code Playgroud) 在Java中,我想转换它:
https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest_type
Run Code Online (Sandbox Code Playgroud)
对此:
https://mywebsite/docs/english/site/mybook.do&request_type
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止:
class StringUTF
{
public static void main(String[] args)
{
try{
String url =
"https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do" +
"%3Frequest_type%3D%26type%3Dprivate";
System.out.println(url+"Hello World!------->" +
new String(url.getBytes("UTF-8"),"ASCII"));
}
catch(Exception E){
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它不能正常工作.这些%3A和%2F格式被称为什么以及如何转换它们?
Charset问题本身令人困惑和复杂,但最重要的是你必须记住你的charsets的确切名称.是"utf8"吗?还是"utf-8"?或许"UTF-8"?在互联网上搜索代码示例时,您将看到以上所有内容.为什么不将它们命名为常量并使用Charset.UTF8?
阅读文档后String java.lang.Enum.name()我不确定我何时使用name()以及何时使用toString().
返回此枚举常量的名称,与其枚举声明中声明的完全相同.大多数程序员应优先使用toString方法,因为toString方法可能会返回一个更加用户友好的名称.此方法主要用于特殊情况,其中正确性取决于获取确切名称,该名称在不同版本之间不会有所不同.
特别是,即使文档说更喜欢toString(),Java自己的StandardLocation枚举name也会在我认为文档建议不同时使用.
public String getName() { return name(); }
Run Code Online (Sandbox Code Playgroud)
另外Enum实现toString()为,
public String toString() {
return name;
}
Run Code Online (Sandbox Code Playgroud)
我无法想到用户定义的枚举会覆盖的toString()情况name(),toString()并且几乎总是完全相同.
name()是一个坏主意?java.lang.Enum.toString()会这样?我正在从FindBugs获得以下bug,
发现依赖于MyClass.print(String)中的默认编码:String.getBytes()
方法
protected void print (String str) {
{
private OutputStream outStream = null;
.....
outStream.write(str.getBytes());
.......
}
Run Code Online (Sandbox Code Playgroud)
请告诉我这是什么错误?我们如何解决这个问题?
提前致谢