Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
帮助以不同语言显示java字符_Java_Http_Internationalization - Fatal编程技术网

帮助以不同语言显示java字符

帮助以不同语言显示java字符,java,http,internationalization,Java,Http,Internationalization,我正在向一个web服务发送请求,收到的响应可以是任何语言:英语、法语、阿拉伯语、日语等 但是,我无法正确显示不同的语言。例如,我收到: translation: ä½ å¥½ 而不是: translation: 你好 我猜我在HTTP请求/响应中没有正确编码。有人能告诉我我可能做错了什么吗?下面是我接收HTTP响应的代码: baos = new ByteArrayOutputStream(); InputStream responseData = conne

我正在向一个web服务发送请求,收到的响应可以是任何语言:英语、法语、阿拉伯语、日语等

但是,我无法正确显示不同的语言。例如,我收到:

translation: ä½ å¥½
而不是:

translation: 你好
我猜我在HTTP请求/响应中没有正确编码。有人能告诉我我可能做错了什么吗?下面是我接收HTTP响应的代码:

        baos = new ByteArrayOutputStream();

        InputStream responseData = connection.openInputStream();
        byte[] buffer = new byte[20000];
        int bytesRead = 0;
        while ((bytesRead = responseData.read(buffer)) > 0) {
            baos.write(buffer, 0, bytesRead);
        }
        System.out.println(new String(baos.toByteArray()));

谢谢

最后打印时,请尝试

System.out.println(新字符串(baos.toByteArray(),Charset.forName(“UTF-8”))

将使用平台的默认字符集解释字节[]。发件人:

通过使用平台的默认字符集对指定的字节数组进行解码来构造新字符串


这些字节需要由与服务器发送给您的字符集兼容的解码器进行解释。这通常是在HTTP
内容类型
标题中指定的。

我认为您应该使用
ByteArrayOutputStream的
方法toString(String charsetName)

大概是这样的:

System.out.println(baos.toString("UTF-8"));
当然,您必须在服务器和客户端上使用相同的编码

我希望这会有帮助。

System.out.println(new String(baos.toByteArray()))
您需要为
新字符串(字节字节[],字符集字符集)
提供正确的字符集

您需要知道要使用哪个字符集(即,它应该与响应一起发送)。
默认值为UTF-8,但不包括中文、日语、阿拉伯语、希伯来语等。

我认为您需要使用InputStreamReader和OutputStreamWriter。这些类允许您指定编码。 例如:

Writer out   = new BufferedWriter(new OutputStreamWriter(System.out, "UTF-8"));
out.write(something);

请参阅清单4,UTF-8确实涵盖了所有这些语言,但它不是默认语言。对不起。
Writer out   = new BufferedWriter(new OutputStreamWriter(System.out, "UTF-8"));
out.write(something);