android - Volley StringRequest 响应更改撇号的值(' 更改为 â)

标签 android json kotlin android-volley

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","'")
Response from web
Response from android

最佳答案

' 的转义序列是 &apos .
尝试

response.replace("'", "&apos;")
有效的代码
  val data = res.toString().trim().replace("â\u0080\u0098","'")

关于android - Volley StringRequest 响应更改撇号的值(' 更改为 â),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66332647/

相关文章:

java - 如何在 Java8 中创建 Json 数组并且仅在设置值时打印 json?

mysql - JSON 打印时带有反斜杠

android - Kotlin:调用函数从 BroadcastReceiver onReceive 更新 UI

android - Gradle 5 中 Artifact 的分类?

java - 对包含 JSONArray 的 URL 进行编码

java - 在 Java 中使用 GSON 验证 JSON

android - 刚刚下载了 Android Studio,打开了我的第一个项目,我在 activity_main.xml 中有错误,但还没有做任何事情

regex - 如何在 kotlin 正则表达式中使用反向引用?

android - 同时使用 setOnItemClickListener 和 setOnItemLongClickListener 两个监听器同时触发或同时工作。为什么

java - 如何在 Java (Android) 中从 AppEngine 解析 DateTime 属性?