当前位置: 首页 > 知识库问答 >
问题:

HTTPServletResponse搞砸了UTf-8

慕容成和
2023-03-14

我有一个utf-8编码的字符串,并希望通过java http servlet响应这个字符串作为http请求的应答,但浏览器只接收到混乱的特殊字符。

try {       
    response.setCharacterEncoding("utf-8");
    response.setHeader("Content-Type", "text/xml; utf-8");
    PrintWriter out = response.getWriter();
    out.write(result);
    out.close();

    Writer fileOut = new BufferedWriter(
        new OutputStreamWriter(
            new FileOutputStream("outputfile")));
    fileOut.write(result);
    fileOut.close();

    } catch (IOException e1) {
        e1.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

为什么HttpServletResponse操作字符串,而不像BufferedWriter(OutputStreamWriter(FileOutputStream))那样直接传递字符编码?

谢谢,化疗。

共有1个答案

韩安顺
2023-03-14

虽然这不是问题的答案,但您应该知道HttpServletResponse还有一个方法可以获取简单的原始OutputStream。如果您确定您的内容实际上是UTF-8,并且结果在这里是字符串,那么只需执行以下操作:

final OutputStream out = response.getOutputStream;
out.write(result.getBytes("UTF-8"));
out.flush(); // probably not needed but it never hurts

您将避免给定的printwriter可能强制执行的所有转换。

 类似资料:
  • 问题内容: 我想在主要安装的Python上更新pip,特别是要获取list命令。其中还包括列表更新功能。 所以我跑了: 一切在安装上看起来都不错,但随后我去运行pip并得到了:(如果有帮助,则包括安装结束) 显然,我有点不高兴,因为这是我的系统安装的python ..我在这里阅读了一些答案,但无法确定最简单的解决方法。 问题答案: 我在linux上也有同样的消息。 但随后检查了正在调用的点。 在我

  • 我们有一些ML模型在Azure ML Studio平台上运行(初始拖动) 好消息/坏消息是我们要训练的数据非常小(数据库中有几百条记录)。这是非常不完美的数据,做出了非常不完美的回归预测,所以误差是可以预料的。那很好。对于这个问题,这很好。因为问题是,当我测试这些模型时,预测太完美了。我不明白我做错了什么,但我显然做错了什么。 (在我看来)明显值得怀疑的事情是,要么我在测试数据上进行训练,要么通过

  • 问题内容: 重构类名称时,Eclipse最近显示出一种非常奇怪的行为。例如,让我们看一下我们的一个类: 并将其重命名为“ CampaignCsvPanel”,则发生以下情况: 奇怪- 基本上每次 我重命名课程时 都会 发生。更重要的是: 我已经创建了一个全新的工作区(并再次签出了相同的项目), 并且我安装了Eclipse的新版本(即Eclipse 3.6和3.7中都发生了)。 我认为,它 必须与

  • 首先自我介绍 然后开始问问题 1、项目有什么难点,有什么特别的地方? 2、(我说了修改了源码)服务器上是自动将包下载打包好的,你知道怎么修改源码放到服务器上吗? 3、(简历上写了UI兼容性问题)你能说说都做了哪些兼容性问题吗?\项目就用到基础的css代码的兼容,但是又不敢背书。什么meta,viewreport什么的 4、csrf知道吗?是如何做到盗用用户身份进行请求伪造的(原理是什么)? 5、知

  • 在我更新android Studio之前,一切都运行得很好。我正在使用Java开发我的应用程序,但现在当我尝试编译时,我得到了这个错误: 我不知道是什么原因造成的,但我怀疑这可能是更新重新定义的东西。如何删除此kotlin错误? PS:我真的没有使用kotlin在我的项目,所以我想知道为什么它显示这个错误。 先谢谢你,AFSC。