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

Posted

技术标签:

【中文标题】Volley StringRequest 响应更改撇号的值(\'更改为â)【英文标题】:Volley StringRequest response change the value for apostrophe( ‘ is changed to â)Volley StringRequest 响应更改撇号的值('更改为â) 【发布时间】:2021-05-25 16:41:48 【问题描述】:

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","'")

【问题讨论】:

There are two types of apostrophe used in the name 你知道第二个叫什么或者它为什么存在吗?您能否将带有两个不同撇号的 json 数据发布为代码,以便我们复制它 @a_local_nobody 一个是您从键盘或安卓设备键盘输入的撇号。另一个是从 ios 设备添加的。当我尝试复制粘贴 â 以替换为 '.它向我展示了这个 â\u0080\u0098。替换响应中的值是可行的,但如果有更好的方法,请告诉我。谢谢 【参考方案1】:

' 的转义序列是&amp;apos

试试

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

有效的代码

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

【讨论】:

谢谢。替换响应中的值有效,但撇号具有值: â\u0080\u0098 并且我将其替换为 ' 效果很好。 很高兴为您提供帮助:) 上传您的 kotlin 代码,这将帮助您并标记为已接受,以便对其他人有所帮助 我通过删除任何 java 引用和方法签名使您的答案更加通用,人们应该仍然理解这个想法,如果您不同意,欢迎您回滚 @a_local_nobody 谢谢你,我当然同意。

以上是关于Volley StringRequest 响应更改撇号的值('更改为â)的主要内容,如果未能解决你的问题,请参考以下文章

2.15 学习总结 之 volley(HTTP库)之StringRequest

用户登录流程详解 +volley(StringRequest)

Android-Volley网络通信框架(StringRequest &amp; JsonObjectRequest)

android volley stringrequest post中的getparams怎么把json数据提交上去

Android开发学习之路-Volley源码解析

Android Volley入门到精通:定制自己的Request