Android 使用Volley库的StringRequest类向web服务发送Unicode请求

Android 使用Volley库的StringRequest类向web服务发送Unicode请求,android,unicode,android-volley,Android,Unicode,Android Volley,我的URL中有一些使用StringRequest类发送的Unicode字符。一旦我把它们放到服务器上,它们就不能以正确的格式表示。我从服务器接收数据时遇到了相同的问题,通过重写parseNetworkResponse方法解决了这个问题。我该怎么办 StringRequest request = new StringRequest(Method.GET, url, new Response.Listener<String>() {

我的URL中有一些使用StringRequest类发送的Unicode字符。一旦我把它们放到服务器上,它们就不能以正确的格式表示。我从服务器接收数据时遇到了相同的问题,通过重写parseNetworkResponse方法解决了这个问题。我该怎么办

    StringRequest request = new StringRequest(Method.GET, url,
            new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {

                    // ...
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                }
            }) {
        @Override
        protected Response<String> parseNetworkResponse(
                NetworkResponse response) {
            // TODO Auto-generated method stub

            String strUTF8 = null;
            try {
                strUTF8 = new String(response.data, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return Response.success(strUTF8,
                    HttpHeaderParser.parseCacheHeaders(response));
        }

        public java.util.Map<String, String> getHeaders()
                throws com.android.volley.AuthFailureError {

            HashMap<String, String> headers = new HashMap<String, String>();

            return headers;
        }
    };
StringRequest-request=新的StringRequest(Method.GET,url,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
// ...
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(标记“Error:+Error.getMessage());
}
}) {
@凌驾
受保护的响应parseNetworkResponse(
网络响应){
//TODO自动生成的方法存根
字符串strUTF8=null;
试一试{
strUTF8=新字符串(response.data,“UTF-8”);
}捕获(不支持的编码异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回响应。成功(strUTF8,
HttpHeaderParser.parseCacheHeaders(响应));
}
public java.util.Map getHeaders()
抛出com.android.volley.AuthFailureError{
HashMap headers=新的HashMap();
返回标题;
}
};

假设阿拉伯语是字符串,为什么不试试这个:

URI.encode("10.0.2.2/test.php?key=20893&rt=add&w1='تست'&w2='تست'"). 

您要发送什么类型的字符串?”“这是我的url,我认为url中不支持这些字符。尝试对它们进行url编码。错误的url http%3A%2F%2F10.0.2.2%2Ftest.php%3Fkey%3D20893%26rt%3dd%26w1%3D%D8%AA%D8%B3%D8%AA%26w2%3D%D8%AA%D8%B3%D8%AAI通过只编码Unicode值并放入我的url字符串来实现,效果很好。