当前位置: 首页 > 知识库问答 >
问题:

向servlet发送“+”字符utf-8,java应用程序[重复]

别宏盛
2023-03-14
kggsW9YizUuRpjB/RtppZImnC8SekMGAWGnCmw+wPMwn7fWJva0QbSK/Slt/DDsZ
kggsW9YizUuRpjB/RtppZImnC8SekMGAWGnCmw wPMwn7fWJva0QbSK/Slt/DDsZ

你能告诉我怎么编码这些字符串吗?或者我做错了什么。

发件人:

url = new URL(url_globalApp);
        connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

        connection.setRequestProperty("Content-Language", "en-US");  
        connection.setRequestProperty("Accept-Charset", "UTF-8"); 
        connection.setUseCaches (false);
        connection.setDoInput(true);
        connection.setDoOutput(true);

        //Send request
        DataOutputStream wr = new DataOutputStream (
                connection.getOutputStream ());
        //**************** first try ************//
        wr.write(pairs_1.getBytes("UTF-8"), 0, pairs_1.length());

        //**************** second try ************//
            //wr.writeBytes(new String(pairs_1.getBytes(),"UTF-8"));

        //**************** third try ************//
            //wr.writeUTF(pairs_1);
            wr.flush ();
            wr.close ();

servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    Map <String,String[]> parameters = request.getParameterMap();
    System.out.println(parameters.get("field_value_1")[0]);

共有1个答案

吴宏扬
2023-03-14

查询参数的值必须是URL编码的。

的URL编码

kggsW9YizUuRpjB/RtppZImnC8SekMGAWGnCmw+wPMwn7fWJva0QbSK/Slt/DDsZ

kggsW9YizUuRpjB%2FRtppZImnC8SekMGAWGnCmw%2BwPMwn7fWJva0QbSK%2FSlt%2FDDsZ
java.net.URLEncoder.encode("kggsW9YizUuRpjB/RtppZImnC8SekMGAWGnCmw+wPMwn7fWJva0QbSK/Slt/DDsZ", "UTF-8")
 类似资料:
  • 我的记事本是用Java JTextPane构建的,在写英语时工作得非常好。然而,用其他语言书写的字母,在我的孟加拉文中,显示的是空方块。我如何解决这个问题?

  • 编码和解码字符串并不像我想象的那么容易。 原始字符串如下: 经过PHP base64编码(使用三次)后,它看起来有所不同: 当尝试JS window.atob()解码字符串时,结果是这样的: UTF-8字符显示不正确。我应该使用什么功能来修复这个问题?

  • 在我的申请中,我必须显示有关已发生特定操作的通知? 然后我必须向登录用户显示通知。 获取通知的一种方法是在一定时间间隔后继续轮询。即拉动通知。但这会对服务器造成不必要的点击。 如何使用来自服务器的推送通知?我在Tomcat中使用JavaServlet和JSP。

  • 问题内容: 我有一个准备好的声明: 在我的代码中,我尝试使用st.setString方法。 userName的值为şakça。setString方法将’şakça’更改为’?akça’。它不能识别UTF-8字符。我怎么解决这个问题? 谢谢。 问题答案: 实际上,解决这些问题的方法数量非常可观。如果您使用的是MySQL,请尝试在JDBC连接URL的末尾添加一个参数: 您还应该检查表/列字符集是否为U

  • 问题内容: 我遇到了这行遗留代码,我试图找出这些遗留代码: 据我了解,它是使用相同的charSet进行编码和解码。 这与以下内容有何不同? 在任何情况下,两条生产线的输出将不同? ps:只是要澄清一下,是的,我知道Joel Spolsky撰写的关于编码 的出色文章! 问题答案: 这可能是很复杂的方式 这缩短了String,而所使用的基础char []则更长。 但是,更具体地说,将检查每个字符是否都

  • 这可能是一个重复的问题,但仍然是。我看过很多关于从Firebase云消息发送通知到android应用程序的教程,但我不知道如何将通知从我的angular网站发送到Firebase,然后Firebase会将这些通知推送到android应用程序。在所有这些教程中,他们都通过在firebase UI中手动键入消息来发送通知。 我的问题是如何将通知数据从我的angular网站发送到FCM,然后FCM将这些