【问题标题】:Volley parameter with accent, sent as special character (�)带重音的 Volley 参数,作为特殊字符 (�) 发送
【发布时间】:2019-01-16 23:52:30
【问题描述】:

我想向我的服务器发出一个 volley post 请求,但是当发送带有重音的参数时,重音变成了�。如果我通过我的 Web 应用程序或邮递员发出请求,服务器将接受该口音。问题是当参数通过凌空。

以下是我提出凌空发帖请求的功能示例。

fun post(path: String, params: JSONObject, headers: HashMap<String, String>, completionHandler: (response: JSONObject?) -> Unit) {
    val jsonObjReq = object : JsonObjectRequest(Method.POST, basePath + path, params,
            Response.Listener<JSONObject> { response ->
                Log.d(TAG, "/post request OK! Response: $response")
                val key = "code"
                val value = 200
                response.put(key, value)
                completionHandler(response)
            },
            Response.ErrorListener { error ->
                Log.d(TAG, "/post request fail! Error:" + error.message)
                completionHandler(null)
            }) {
        @Throws(AuthFailureError::class)
        override fun getHeaders(): Map<String, String> {
            headers.put("Content-Type", "application/json ; charset=utf-8")
            return headers
        }
    }

【问题讨论】:

标签: android kotlin android-volley


【解决方案1】:

查看Request.java 的源代码时,它显着地指出:

/**
 * Default encoding for POST or PUT parameters.
 * See {@link #getParamsEncoding()}.
**/
private static final String DEFAULT_PARAMS_ENCODING = "UTF-8";

确保源代码文件(通常在 Android Studio 的右下角有一个小指示符)和发布的内容确实有 UTF-8 编码(这是 Web 开发中很常见的问题,这里可能也适用) .如果内容没有UTF-8 编码,则需要在发布前对其进行转换,以免以 替换字符结尾。请参阅此example 了解String 转换。

还要检查一次脚本的编码、数据库连接和服务器端的数据库;如果其中任何一个不支持UTF-8,它将无法正常工作。这不一定是客户端问题(应该支持 UTF-8 开箱即用)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2023-03-22
    • 2010-12-15
    • 1970-01-01
    相关资源
    最近更新 更多