android中的httpurlconnection的使用之四

author author     2022-08-03     289

关键词:

 前面的使用之三我简单的说了下app与本地的服务器相连接并进行简单的数据传输,但是后来简单的测试了一下传输中文数据,会发现乱码了!这是怎么回事呢?这里我们解释一下出现这个情况的原因。

1.首先分析原因:这是因为当我们提交数据时,数据编码格式是iso-8859-1,而服务器那边数据的编码格式是utf-8格式。因此我们想不会出现这种情况的话,必须进行数据转码

2.数据转码:服务器后台收到数据我们应该使用相应的方法,将原来的数据格式从iso-8859-1格式转化为utf-8.

Java代码(这个是servlet的Java代码 是服务器的代码,不是客户端)
 1 package com.Servlet;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 /**
12  * Servlet implementation class Servlet
13  */
14 public class Servlet extends HttpServlet {
15     private static final long serialVersionUID = 1L;
16        
17     /**
18      * @see HttpServlet#HttpServlet()
19      */
20     public Servlet() {
21         super();
22         // TODO Auto-generated constructor stub
23     }
24 
25     /**
26      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
27      */
28     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
29         //调用下面的doPost方法
30         this.doPost(request, response);
31     }
32 
33     /**
34      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
35      */
36     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37         //从request中分别获得name age属性
38         String name = request.getParameter("name");
39         String age = request.getParameter("age");
40         response.setContentType("text/html;charset=utf-8");
41         PrintWriter pw = response.getWriter();
42         //再网页上显示相应的信息
43         System.out.println(new String (name.getBytes("iso-8859-1"), "UTF-8"));
44         pw.println("name = " + new String (name.getBytes("iso-8859-1"), "UTF-8") + " age = " + age);
45         //在控制上显示相应的信息
46         System.out.println("11name = " + new String(name.getBytes("iso-8859-1"), "utf-8"));
47         System.out.println("age = " + age);
48     }
49 
50 }

将代码改成这样过后,我们再去测试,如果发现在网页显示的是正确的,而控制台上显示的却是乱码。这个是为什么呢?

那是因为在编码的时候, jsp文件按照的是iso-8859-1的格式编码,因此要改变它的编码格式。只需将下面的红色部分改变了就是了。

jsp代码

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 
11     <form action="Servlet" method = "get">
12     name:<input type = "text" name = "name"><br>
13     age:<input type = "text" name = "age"><br>
14     submit:<input type = "submit" value = "submit"><br>
15     </form>
16 </body>
17 </html>

 

用io流发送http请求

packagecom.j1.mai.action;importjava.io.BufferedReader;importjava.io.DataOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.HttpURLConnectio 查看详情

android中的java.lang.OutOfMemoryError,同时从android中的画廊获取图像

】android中的java.lang.OutOfMemoryError,同时从android中的画廊获取图像【英文标题】:java.lang.OutOfMemoryErrorinandroidwhilegettingimagefromgalleryinandroid【发布时间】:2012-12-1215:07:35【问题描述】:我正在使用代码从图库中挑选图片publicvoidonCreat... 查看详情

Android中的LocalBroadcastManager是啥[重复]

】Android中的LocalBroadcastManager是啥[重复]【英文标题】:WhatisLocalBroadcastManagerinAndroid[duplicate]Android中的LocalBroadcastManager是什么[重复]【发布时间】:2016-06-2913:25:01【问题描述】:我不知道android中的LocalBroadcastManager。链接和博客非常... 查看详情

Android中的处理程序

】Android中的处理程序【英文标题】:HandlerinAndroid【发布时间】:2012-01-1215:38:04【问题描述】:我正在通过Android应用程序中的处理程序实现IPC。在官方文档(这里http://developer.android.com/reference/android/app/Service.html)中有一个例子:... 查看详情

android 6中的android webview youtube视频中的全屏模式问题

】android6中的androidwebviewyoutube视频中的全屏模式问题【英文标题】:Probleminfullscreenmodeinandroidwebviewyoutubevideoinandroid6【发布时间】:2020-03-2423:44:01【问题描述】:android6有什么问题?请帮我解决这个问题。logcat第一行的************是... 查看详情

Android 中的 ContactsContract 概览

】Android中的ContactsContract概览【英文标题】:ContactsContractOverviewinAndroid【发布时间】:2021-03-0511:00:38【问题描述】:我刚刚浏览了Android中的ContactsContractAPI,我被它的概述部分卡住了。然后我得到了这个链接https://developer.android.com... 查看详情

为啥android中的计算与php中的计算不同?

】为啥android中的计算与php中的计算不同?【英文标题】:Whycalculationinandroidwithinphpdifferent?为什么android中的计算与php中的计算不同?【发布时间】:2017-12-1911:19:24【问题描述】:我在android中计算有问题,我正在计算((1*(1+((0.025*12)... 查看详情

Android 中的 .dex 文件是啥?

】Android中的.dex文件是啥?【英文标题】:Whatare.dexfilesinAndroid?Android中的.dex文件是什么?【发布时间】:2011-12-0617:14:53【问题描述】:我有一些关于dex文件的问题什么是Android中的dex文件?dex如何在Android上运行?它们如何用于调... 查看详情

Android 库中的 Proguard

】Android库中的Proguard【英文标题】:ProguardinAndroidLibrary【发布时间】:2013-08-1415:30:30【问题描述】:我在使用Android中的Proguard文件时遇到错误。关键是,我知道如何在Android项目中使用它,但是现在,我需要将它用于Android库项目... 查看详情

Android中的onLongPress事件多长时间?

】Android中的onLongPress事件多长时间?【英文标题】:HowlongistheeventonLongPressintheAndroid?【发布时间】:2010-12-2804:52:52【问题描述】:Android支持onLongPress事件。我的问题是“按下”触发事件的时间是“多长时间”(以毫秒为单位)?... 查看详情

Android中的默认字体系列是啥?

】Android中的默认字体系列是啥?【英文标题】:WhatisthedefaultfontfamilyinAndroid?Android中的默认字体系列是什么?【发布时间】:2017-01-2422:02:10【问题描述】:从API16开始,引入了JellybeanRoboto作为可用的字体系列。查看Android16here中的... 查看详情

FrameLayout 中的 'android:foreground' 和 'android:foregroundGravity' 如何影响其外观?

】FrameLayout中的\\\'android:foreground\\\'和\\\'android:foregroundGravity\\\'如何影响其外观?【英文标题】:Howdo\'android:foreground\'and\'android:foregroundGravity\'inFrameLayoutaffectitsappearance?FrameLayout中的\'android:foreground\'和\'a 查看详情

适配器在 Android 中的作用是啥?

】适配器在Android中的作用是啥?【英文标题】:What\'stheroleofadaptersinAndroid?适配器在Android中的作用是什么?【发布时间】:2011-04-1003:37:38【问题描述】:我想知道when、where以及如何适配器在Android上下文中的使用。Android开发者文... 查看详情

如何将 xml 中的 android:radius 转换为 Kotlin Android 中的浮点值

】如何将xml中的android:radius转换为KotlinAndroid中的浮点值【英文标题】:Howtoconvertandroid:radiusinxmltofloatvalueinKotlinAndroid【发布时间】:2019-09-2123:46:52【问题描述】:我有一个可绘制的背景xml文件,如下所示,我将视图的半径设置为40... 查看详情

Android 中的侧通道通知是啥?

】Android中的侧通道通知是啥?【英文标题】:WhataresidechannelnotificationsinAndroid?Android中的侧通道通知是什么?【发布时间】:2015-08-2106:26:56【问题描述】:支持库中的类android.support.v4.app.NotificationManagerCompat引用侧通道通知。但是... 查看详情

Android中的多行TextView?

】Android中的多行TextView?【英文标题】:MultilineTextViewinAndroid?【发布时间】:2011-10-0405:05:56【问题描述】:我在xml下面做了喜欢<TableRow><TextViewandroid:id="@+id/address1"android:layout_android:layout_android:gravity="left"android:maxLines 查看详情

Android中的嵌套形状

】Android中的嵌套形状【英文标题】:NestedshapesinAndroid【发布时间】:2010-12-1021:57:05【问题描述】:我正在尝试绘制一个具有三个矩形形状的形状:纯色渐变白线我该怎么做?当我尝试这个时,它不起作用。布局具有父颜色。<s... 查看详情

android中的圆形渐变

】android中的圆形渐变【英文标题】:Circulargradientinandroid【发布时间】:2011-01-2900:42:55【问题描述】:我正在尝试制作一个渐变,它从屏幕中间发出白色,并在向屏幕边缘移动时变为黑色。当我制作这样的“正常”渐变时,我一... 查看详情