带重音的 Volley 参数,作为特殊字符 (�) 发送

Volley parameter with accent, sent as special character (�)

我想向我的服务器发出 volley post 请求,但是当发送带有重音的参数时,重音变成了 �。如果我通过我的 Web 应用程序或通过 postman 发出请求,则服务器会接受重音。问题是当参数通过 volley.

下面是我的函数示例,可以发出截击 post 请求。

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
        }
    }

在查看 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 编码(这在网络中是一个很常见的问题发展,这可能也适用于此)。如果内容没有 UTF-8 编码,则需要在发布前进行转换,以免以 替换字符结尾。请参阅此 以了解 String 转换。

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