GSON 未以 UTF-8 发送

2023-12-21

以下方法发送 JSON 回复。然而,在接收端,我不断收到无效字符,并且 UTF-8 无法解码数据。我究竟做错了什么?

对客户端的响应=数据输出流

//Get the client request
            clientRequest = new BufferedReader(new InputStreamReader(connectedClient.getInputStream())); //connectedclient = socket

            //Start response object
            responseToClient = new DataOutputStream(connectedClient.getOutputStream());


/**
     * Sends a JSON response for an object
     * @param objectToEncode
     * @throws Exception
     */
    private void sendJSONResponse(Object objectToEncode) throws Exception{

        //Encode object into JSON
        String jsonString = new Gson().toJson(objectToEncode);

        // HTTP Header... Status code, last modified
        responseToClient.writeBytes(HTTP_OK_STATUS_CODE);
        responseToClient.writeBytes(CONTENT_TYPE_JSON);
        responseToClient.writeBytes("Last-modified: "+ HelperMethods.now() +" \r\n");
        responseToClient.writeBytes("\r\n"); 

        // The HTTP content starts here
        responseToClient.writeBytes(jsonString);

    }

我不知道你为什么要编写自己的 HTTP 协议代码。这很像编写您自己的 XML 解析器:无论您是多么优秀的程序员,您都一定会出错。

无论如何,作为数据输出流 http://docs.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html文档说明,正在做writeBytes在字符串上只会丢弃其高八位。所以你得到的是......一些东西,但不是UTF8。你应该做的是:

String jsonString = new Gson().toJson(objectToEncode);
byte[] utf8JsonString = jsonString.getBytes("UTF8");
responseToClient.write(utf8JsonString, 0, utf8JsonString.Length);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GSON 未以 UTF-8 发送 的相关文章

随机推荐

  • with 语句在 Python 2.4 中产生“无效语法”错误

    我有一些用 Python 2 7 编写的代码 如下所示 if os path exists path to my file somefile txt with open path to my file somefile txt r as r
  • 在 React Native 中更改应用程序背景颜色

    我正在尝试将 React Native 应用程序中的背景颜色从灰色更改为白色 我在用着反应导航做一个TabNavigator在我渲染它之后 我试着把这个TabNavigator在视图和集合中backgroundColor但所有屏幕都变白了
  • GitHub 不断抛出“无法提交子模块”错误,我不明白这是为什么。有任何想法吗?

    我正在尝试将我的项目放在 GitHub 上 但我一直遇到问题 我在 GitHub 网站 上创建了一个存储库 下载了客户端 克隆 基本上拖放 GitHub 给我的链接 它 将我的项目移动到克隆目录中 但我仍然没有看到文件 所以我检查了 更改
  • Pickling 经过训练的 NLTK 模型

    所以我目前正在一组手术数据上训练隐马尔可夫模型 如下所示 nltkTrainer nltk tag hmm HiddenMarkovModelTrainer range 15 range 90 model nltkTrainer train
  • 如何使用 Kubectl 隐藏列

    我使用 tmuxinator 生成一个 tmux 窗口 用于监视一些 kubectl 命令的输出 例如 watch n 5 kubectl get pods rc svc pv pvc 但有时 Kubectl 的输出变得太宽 即滚动更新后的
  • NumPy 布尔数组警告?

    我有一些 numpy 数组 可以说a b and c 并创建了一个mask适用于所有这些 我试图这样掩盖它们 a a mask where mask is a bool大批 值得注意的是 我已经验证过 len a len b len c l
  • 使用 r 包 xlsx 删除 Excel 中的工作表

    正如标题所述 我想使用 r 和 xlsx 包删除 excel 中的第二个工作表 然而 运行代码后 什么也没有发生 以下是我用来删除工作表的示例代码 path C ECOS Code Test data xlsx sheets getShee
  • 如何生成可重复的随机数序列?

    我想要一个可以生成伪随机值序列的函数 但该序列每次运行都是可重复的 我想要的数据必须在给定范围内相当好的随机分布 它不一定是完美的 我想编写一些代码 根据随机数据对其运行性能测试 我希望每台机器上的每次测试运行的数据都相同 但由于存储原因
  • 将内容文件存入带换行符的 unix 变量中

    我有一个文本文件 test txt 其中包含以下内容 text1 text2 我想将文件的内容分配给 UNIX 变量 但是当我这样做时 testvar cat test txt echo testvar 结果是 text1 text2 代替
  • 使用 Graph Api 针对租户进行角色计数

    有没有办法找到每个role存在反对tenant and number of users已分配给每个role using GraphServiceClient or GraphConnection班级 我正在使用 C 目录角色 查找租户的所有
  • Windows 中的 Jenkins 以俄语显示 UI

    我来自乌克兰 当我在浏览器中打开 Jenkins 时 我看到所有用户界面都是俄语的 我在 Windows 上运行 Jenkins 但是 Windows 配置 区域和设置 中没有俄语 格式 英语 美国 地点 美国 只有时区是乌克兰语 UTC
  • 如何在 UITabBarController 中插入 UINavigationController

    如何插入UINavigationController inside UITabBarController 目前我有主要UITabBarController像这样在应用程序委托内声明 所以选项卡是主要的 self window rootVie
  • 如何在 r markdown 中将 kable 和 ggplot 对齐在一行(并排)?

    我正在尝试编织一个 r markdown 文件pdf 但我无法将 ggplot 和 kable 对齐在一行中 我尝试过以下方法 猫 双列 kable styling 位置 float right 下面是一个最小的 可重现的示例 title
  • 从 Jenkinsfile 中的共享库导入类

    我有一个具有以下结构的共享库存储库 root src com company DeploySteps groovy vars MainDeploySteps groovy 该库通过 Jenkinsfile 导入到作业中 如下所示 libra
  • 保存后显示相同页面

    我想显示一个带有某些字段 示例中的一个 的表单 提交它 保存并显示同一页面并重置所有字段 当我提交问题时 我执行 保存 操作 但是当我显示视图时 表单仍然被填写 该模型 public class TestingModel public st
  • 多个已编译的 linq 查询可以链接在一起吗?

    我正在尝试将多个已编译的 linq 查询链接在一起 我已经成功地将两个查询链接在一起 但我无法让三个查询链正常工作 因此 这里减少了我的代码以重现问题 我的两个问题是 为什么这不起作用 以及 是否有更好的方法来保持编译查询的性能优势并避免重
  • 如何在 PHP Web 应用程序中实现 Mozilla DeepSpeech 以将语音转换为文本?

    我有一个 PHP Web 应用程序 正在寻找一种开源 高精度的语音到文本识别实现 该实现将采用语音命令来打开用户的网页 例子 进行销售 这将打开创建销售 PHP 页面 下达采购订单 打开日终报告 etc 我的问题 我想知道我们是否可以使用M
  • 如何使用代表点对复杂形状进行建模?

    我想将该图像中的白色像素数量减少到输出图像中的一些候选点或代表点 目标是对不同类型的形状进行建模 如果您只是将输出图像中的灰点连接在一起 您将拥有相同的路径 但白色像素较少 这条路径应该只有一个起点和一个终点 并且涵盖从起点到终点的所有路径
  • GDB未知目标异常(在64位环境下调试32位目标时)

    我想使用 64 位版本的 MinGW w64 x86 64 w64 mingw32 提供的 GDB 调试器来调试使用 32 位版本的 MinGW w64 x86 64 w64 mingw32 创建的 32 位目标 根据在 64 位环境中使用
  • GSON 未以 UTF-8 发送

    以下方法发送 JSON 回复 然而 在接收端 我不断收到无效字符 并且 UTF 8 无法解码数据 我究竟做错了什么 对客户端的响应 数据输出流 Get the client request clientRequest new Buffere