java - 如何将 HTTP 请求正文写入 Java Web 应用程序中的文件?

标签 java unicode utf-8 io

这是我的代码:

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    final ServletInputStream inputStream = req.getInputStream();
    int read;
    File file = new File("koray.txt");
    final FileOutputStream fileOutputStream = new FileOutputStream(file);
    while ((read = inputStream.read()) != -1) {
        fileOutputStream.write(read);
    }
    fileOutputStream.flush();
    fileOutputStream.close();
}

当我收到这样的 HTTP 请求时:

beer-characteristics=ğ

在 koray.txt 中我会看到:

beer-characteristics=%C4%9F

嗯,c49f 似乎是“ğ”的 utf-8 十六进制值,但为什么我在文件中看到十六进制值,而不是“ğ”本身?

编辑:这也不起作用:

final OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
while ((read = in.read()) != -1) {
    outputStreamWriter.write(read);
}

最佳答案

用以下内容包装您的输入流:

BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

然后从缓冲读取器中以 utf-8 格式读取数据。

关于java - 如何将 HTTP 请求正文写入 Java Web 应用程序中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34878956/

相关文章:

java - Liferay 只获取特定记录的数据

Java:如何检查程序是否已正确启动?

java - 在java中转换为utf-8

c# - 将字符串转换为 Unicode 字符

mysql - 是否可以在 latin-1 字符集安装上恢复 UTF-8 MySQL 转储?

java - Tomcat8 UTF-8 显示为问号

java - 在 tomcat 8 的共享文件夹中添加属性文件并在 Spring MVC Web 应用程序中使用它

java - 如何通过 Java 从 MS Access 2007 数据库中读取 Unicode 字符?

python - 如何在 Windows 控制台中用 python 打印 unicode 字符串

java - 来自 Collections.unmodifiableMap get() 的 StackOverflowError?