gpt4 book ai didi

java - URLConnection 编码问题与重音字符

转载 作者:行者123 更新时间:2023-12-01 18:40:11 26 4
gpt4 key购买 nike

我在尝试发送文本时遇到 URLConnection 编码问题。

我的代码是这样的:

final URL url = new URL(urlString);
final URLConnection urlConnection = url.openConnection();
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setUseCaches(false);
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
urlConnection.setRequestProperty("Accept-Charset", "UTF-8");

final DataOutputStream urlDataOut = new DataOutputStream(urlConnection.getOutputStream());
urlDataOut.writeBytes(prepareData.toString());
urlDataOut.flush();
urlDataOut.close();

我的 prepareData.toString() 包含一个带有“è”的单词,一旦写入 urlDataOut,它将包含带有问号的菱形,而不是“è”字母和写入状态为 FAILURE。

有人知道如何面对这个问题吗?

最佳答案

方法DataOutputStream.writeBytes方法不适合任何字符编码。它的文档说:

Each character in the string is written out, in sequence, by discarding its high eight bits.

使用方法writeUTF也不可行。它写入两个字节,其中包含编码的 String 长度(字节数),服务器将其解释为开头的字符。

因此,您应该使用将文本写入 OutputStream 的标准方法:

Writer w=new OutputStreamWriter(
urlConnection.getOutputStream(), StandardCharsets.UTF_8);
w.write(prepareData.toString());
w.flush();
w.close();

关于java - URLConnection 编码问题与重音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20266799/

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