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

时间:2019-01-16 23:52:30

标签: android kotlin android-volley

我想向我的服务器发出排球发布请求,但是当发送带有重音符号的参数时,重音符号变为``。如果我通过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
        }
    }

1 个答案:

答案 0 :(得分:0)

查看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)。