我正在研究我的android项目,我有一个异国情调的问题让我发疯.我正在尝试将字符串转换为Utf-16或Utf-8.我使用这段代码来实现它,但它给了我一个带有一些负面成员的数组!
Java代码:
String Tag="???";
String Value="";
try{
byte[] bytes = Tag.getBytes("UTF-16");
for(int i=0;i<bytes.length;i++){
Value=Value+String.valueOf(bytes[i])+",";
}
Run Code Online (Sandbox Code Playgroud)
数组成员:数组成员是[-1,-2,51,6,-52,6,49,6].我检查了UTF-16的表格.它没有任何负数,我也使用了一个将单词转换为UTF-16M的网站.它给了我"0633 06CC 0631"HEX.如果将此数字更改为十进制,您将看到:"1577 1740 1585".如你所见,这里没有负数!所以我的第一个问题是这些负数是什么?!
为什么我要将单词转换为UTF-8或UTF-16?
我正在做一个项目.这个项目有两个部分.第一部分是一个Android应用程序,它将关键字发送到服务器.这些单词由客户发送.我的客户使用(波斯语,فارسی)字符.第二部分是由C#制作的Web应用程序,它必须响应我的客户.
问题:当我将这些单词发送到服务器时,它会在"????"的流上运行 而不是正确的单词.我已经尝试了很多方法来解决这个问题,但他们无法解决这个问题.之后我决定将utf-16或utf-8字符串自己发送到服务器并将其转换为正确的单词.所以我选择了我在帖子顶部描述的方法.
我的原始代码可靠吗?
是的.如果我使用英文字符,它反应非常好.
我的原始代码是什么?
将参数发送到服务器的Java代码:
protected String doInBackground(String...Urls){
String Data="";
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 …Run Code Online (Sandbox Code Playgroud) 我试图拆分一个字符串,但它不起作用.我调试了我的应用程序,我发现问题发生在第8行.在第8行,它显示了一个名为pattern.class&app停止工作的文档.我在代码中看不到任何问题; 我刚刚遵守了规则.
我该如何解决这个问题?
我的代码:
String AdsIds[]=new String[6];
String EnTitle[]=new String[6];
String AdsTemproryData[]=new String[6];
String BineryTemprory[]=new String[2];
public void sieve(String Hash){
AdsTemproryData=Hash.split("/");
for(int i=0;i<=5;i++){
BineryTemprory= AdsTemproryData[i].split("*");
AdsIds[i]=BineryTemprory[0];
EnTitle[i]=BineryTemprory[1];
}
Run Code Online (Sandbox Code Playgroud)