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

android中的字符解码

涂煌
2023-03-14

我正在做我的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;        
                }    
            }

我应该如何解决我的问题?

共有1个答案

薛钧
2023-03-14

简短回答

使用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对象节点