首页 > 解决方案 > Volley StringRequest 响应更改撇号的值('更改为â)

问题描述

api 调用发送正确的响应,但是当我从 Volley StringRequest 获得响应时,撇号符号更改为不可读的字符。

我用于进行 api 调用的代码是这样的:

private fun makeRequest(
    method: Int,
    params: Map<String, String>,
    auth: Boolean,
    token: String = "null",
    logout: Boolean = false
) {
    // Creating a StringRequest
    val req = object : StringRequest(method, url, { res ->
        // Creating JSON object from the response string
        // and passing it to result: (JSONObject) -> Unit function
        result(res.toString().trim())
    }, { volleyError: VolleyError? ->
        // Getting error message and passing it
        // to val error: (String) -> Unit function
        if (!logout) {
            if (!sessionExpire) {
                if (volleyError!!.networkResponse != null) {
                    handleError(volleyError)
                } else {
                    HelperService().displayToast(
                        context!!,
                        context!!.resources.getString(string.internetError)
                    )
                }
            }

        }
        error?.invoke()
    }) {
        // Overriding getParams() to pass our parameters
        override fun getParams(): Map<String, String> {
            if (method == Constants.GET) {
                return super.getParams();
            } else {
                return params
            }
        }

        override fun getHeaders(): MutableMap<String, String> {
            if (auth) {
                val headers = HashMap<String, String>()
                headers["authorization"] = "Token " + token
                return headers;
            } else {
                return super.getHeaders();
            }

        }
    }
    req.retryPolicy = DefaultRetryPolicy(
        60000,
        0,
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
    );
    // Adding request to the queue
    volley.add(req)
}

附上回复图片。第一个是来自网络的响应,它正在正常显示。第二个来自Android。名称中使用了两种撇号。我需要他们两个工作。请帮忙。

更新:更换工作,但请推荐一个更好的解决方案。所以,我不会有这种类型的问题作为回应。

           val data = res.toString().trim().replace("â\u0080\u0098","'")

来自网络的回应

来自安卓的回应

标签: androidjsonkotlinandroid-volley

解决方案


的转义序列'&apos

尝试

response.replace("'", "&apos;")

有效的代码

  val data = res.toString().trim().replace("â\u0080\u0098","'")

推荐阅读