我正在做我的Android项目。我必须通过我的android应用程序发送一些话到服务器应用程序。发送后,我将能够搜索一些调查并将其返回给客户。我的用户使用“波斯”字符来搜索他们合适的主题。
我发现,当我将它们(波斯语فاسی
)发送到服务器时,服务器无法正确识别它们。它在一个“流”上工作而不是正确的词语。它只是有这个问题,从android应用程序发送的波斯语单词不是英语单词。我从未尝试过其他语言,但我认为它们也有这个问题。我认为移动设备对波斯语字符有不同的编码
我使用查询字符串来捕获参数。之后,我使用这个参数进行查询,从DB返回主题。C#:
string Tag = Request.QueryString["Tag"].ToString();
Java:
这一部分说明如何将参数发送到服务器。我认为这是通过HTTP协议发送参数的常用方法。
HttpURLConnection urlConnection = null;
try{
URL myUrl=new URL("http://10.0.2.2:80/Urgence/SearchResault.aspx?Tag="+Tag);
urlConnection = (HttpURLConnection)myUrl.openConnection();
BufferedReader in = new BufferedReader (new InputStreamReader(urlConnection.getInputStream()));
String temp="";
// Data is used to store Server's Response
while((temp=in.readLine())!=null)
{
Data=Data+temp;
}
}
我应该如何解决我的问题?
简短回答
使用UTF-8编码
如果你有
String message = ...;
这将转换为字节[]
byte[] bytes = message.getBytes();
然后必须使用
new DatagramPacket(bytes, bytes.length(), ... );
你的电话使用
new DatagramPacket( message.getBytes, message.length(),..,
但这使用字符串长度,但波斯语要求每个字符超过一个字节。
字符串有5个字符,但UTF-8编码需要10个字节。你需要发送10个字节。UTF-8编码的字母表中的一个字母需要2个字节,因此这个包含5个字母的单词编码为10个字节。数据报数据包长度必须以字节计数为单位。
将
参数设置为:
String parameters = "parameter1=" + URLEncoder.encode("YOUR_STRING_TO_ENCODE","UTF-8");
然后,在异步任务下:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setFixedLengthStreamingMode(params.getBytes().length);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
PrintWriter out = new PrintWriter(conn.getOutputStream());
out.print(params);
out.close();
String response = "";
Scanner inStream = new Scanner(conn.getInputStream());
while (inStream.hasNextLine()) {
response += (inStream.nextLine());
}
然后,通过此操作,您将从服务器获得结果:
-
movaffagh-baash
为什么会发生这种事,有谁知道…??我做错了什么...
问题内容: 解析JSON似乎是这里讨论的一个相当普遍的话题。我环顾四周,但仍然找不到我想要的东西。这是我的HttpClient的代码 我正在使用HttpClient将JSON请求发送到服务器。然后,服务器以JSON返回响应。这很好。现在这是我遇到麻烦的地方。我从服务器接收到HttpEntity。然后,我将其变成看起来像这样的字符串。 我希望能够将此字符串发送到我的方法,并且它返回键值映射。我觉得这
问题内容: 我想从android中的字符串解析网址。示例字符串为 我想在不使用subString方法的情况下从String 解析URL 。 问题答案: 更新: 您可以使用正则表达式和正则表达式来查找文本中的所有url。 原版的: 您可以使用功能。
我有一个输入表单,允许某人键入unicode字符。所以它可能是类似于“嘿,uF32A怎么了?如果我得到这个字符串,它将有一个子字符串“\uF32A”,我如何将其转换为字符“\uF32A”?
问题内容: 如何在Android中解析Json字符串数组并将其保存在Java字符串数组中(例如:xy [])? 我要解析的Json: 稍后在我的代码中,我想用该数组填充布局中的微调项。我尝试过的所有内容都只包含微调框中列出的一个街头商品。 问题答案: 解析 一旦解析并将其添加到数组。使用相同的控件来填充微调框。 表示json数组节点 表示json对象节点