处理输出编码与Java.io编码不同?
我没有java经验,我刚刚开始尝试处理 我正在尝试在processing中编写一个脚本,它将使用HTTPPOST命令向web服务器发送一个512字节的数组。这一切都很好(多亏了我在互联网上找到的代码!)但我在编码方面遇到了一些问题。我正在创建一个用0xFF填充的字符数组。这将在输出窗口中打印为512个“ÿ”字符。问题是HTTPScoop将post十六进制显示为一系列0xD8字符或“Ø”字符。我不确定为什么控制台正在打印一个字符,而输出流似乎正在发送另一个字符 代码如下:处理输出编码与Java.io编码不同?,java,encoding,processing,Java,Encoding,Processing,我没有java经验,我刚刚开始尝试处理 我正在尝试在processing中编写一个脚本,它将使用HTTPPOST命令向web服务器发送一个512字节的数组。这一切都很好(多亏了我在互联网上找到的代码!)但我在编码方面遇到了一些问题。我正在创建一个用0xFF填充的字符数组。这将在输出窗口中打印为512个“ÿ”字符。问题是HTTPScoop将post十六进制显示为一系列0xD8字符或“Ø”字符。我不确定为什么控制台正在打印一个字符,而输出流似乎正在发送另一个字符 代码如下: import java.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
public static void main(String[] args) {
try {
// Construct data
char[] anArray = new char[512];
char charFillValue = 0xFF;
Arrays.fill(anArray, charFillValue);
String str = new String(anArray);
println(str);
String data = str;
println(data);
// Send data
URL url = new URL("http://10.10.155.120:8081/set.cgi?dst=p1");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
wr.close();
rd.close();
} catch (Exception e) {
}
}
任何帮助都将不胜感激 基本问题似乎是Java的默认编码和服务器的编码不匹配。在
OutputStreamWriter
中设置编码。例如,使用构造函数。捕获(异常E){}
不要忽略断开代码中的异常!这应该是catch(异常e){e.printStackTrace();}
。(这不是直接的问题,但无论如何都要解决。)谢谢Andrew,例外不再被忽略!(以上片段目前没有例外)。太棒了!它看起来像是ISO编码!谢谢你的帮助!新代码是:OutputStreamWriter wr=新的OutputStreamWriter(conn.getOutputStream(),“ISO8859_1”);