Как отправить текст фарси с Android на БД сервера SQL в Android с WCF
Я сделал веб-сервис и некоторые веб-методы, которые я вызываю в моем приложении для Android с помощью ksoap. Один из этих методов получает строку фарси и вставляет ее в базу данных, но когда я возвращаюсь и проверяю, я вижу только знаки вопроса (?) Вместо символов фарси.
метод вызова веб-службы в моем приложении для Android с помощью ksoap
public String sendcomment(String Comment , Float rate)
{
String MethodName="SetResComment";
try {
SOAP_ACTION = namespace + MethodName;
//Adding values to request object
request = new SoapObject(namespace, MethodName);
//Adding string value to request object
PropertyInfo P_RSID =new PropertyInfo();
P_RSID.setName("RSID");
P_RSID.setValue(staticvar.CurrentRes.getID()); //llllllllll
P_RSID.setType(String.class);
request.addProperty(P_RSID);
PropertyInfo P_UID =new PropertyInfo();
P_UID.setName("UID");
P_UID.setValue(staticvar.UID); //llllllllll
P_UID.setType(String.class);
request.addProperty(P_UID);
PropertyInfo P_Name =new PropertyInfo();
P_Name.setName("Name");
P_Name.setValue(staticvar.Mame); //llllllllll
P_Name.setType(String.class);
request.addProperty(P_Name);
PropertyInfo P_Comment =new PropertyInfo();
P_Comment.setName("Comment");
P_Comment.setValue(Comment); //llllllllll
P_Comment.setType(String.class);
request.addProperty(P_Comment);
PropertyInfo P_Rate =new PropertyInfo();
P_Rate.setName("Rate");
P_Rate.setValue(String.valueOf(rate)); //llllllllll
P_Rate.setType(String.class);
request.addProperty(P_Rate);
SetEnvelope();
try {
//SOAP calling webservice
androidHttpTransport.call(SOAP_ACTION, envelope);
//Got Webservice response
String result = envelope.getResponse().toString();
return result;
} catch (Exception e) {
// TODO: handle exception
return e.toString();
}
} catch (Exception e) {
// TODO: handle exception
return e.toString();
}
}
мой веб-метод:
[WebMethod]
public string SetResComment(string RSID, string UID, string Name, string Comment, string Rate)
{
float rt = float.Parse(Rate);
PayamDB pdb = new PayamDB();
return pdb.SetResComment(RSID, UID, Name, Comment, rt);
}
метод setrescomment в классе payamDB
public string SetResComment(string RSID,string UID, string Name, string Comment,float Rate)
{
try
{
SqlCommand command;
{
command = new SqlCommand("insert into DB_9B1504_daghfood.dbo.T_Res_Comment (ResID,UserID,UserName,Comment,rate,TimeDate) values ('" + RSID + "','" + UID + "','" + Name + "' , '" + Comment + "' , '" + Rate + "' , ' " + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')", connection);
command.Connection.Open();
int s=command.ExecuteNonQuery();
command.Connection.Close();
return s.ToString();
}
}
catch (Exception e) { return "error:"+e.Message; }
}
2 ответа
Наконец я нашел свой ответ
Мы должны использовать N
перед значением в кодировке UTF-8 в запросе вставки
Как это:
command = new SqlCommand("insert into DB_9B1504_daghfood.dbo.T_Res_Comment (ResID,UserID,UserName,Comment,rate,TimeDate) values ('" + RSID + "','" + UID + "', N'" + Name + "' , N'" + Comment + "' , '" + Rate + "' , ' " + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')", connection);
Для просмотра на компьютере с Windows загрузите шрифты Farsi. То же самое касается Android. Вы получаете знак вопроса, потому что ваша система не знает, какой это язык или шрифт.