Php 没有从Android应用程序向MySQL数据库插入正确的西里尔字母条目
我目前正在开发一个Android应用程序,它使用一个远程MySQL数据库来写/读地图上用户位置的书签。我通过反向地理定位获取一个位置的地址,然后用以下代码将其传递到一个php文件:Php 没有从Android应用程序向MySQL数据库插入正确的西里尔字母条目,php,android,mysql,Php,Android,Mysql,我目前正在开发一个Android应用程序,它使用一个远程MySQL数据库来写/读地图上用户位置的书签。我通过反向地理定位获取一个位置的地址,然后用以下代码将其传递到一个php文件: EditText addressEntry = (EditText) findViewById(R.id.addressentry); String address = addressEntry.getText().toString().trim(); nameValuePairs.add(new BasicName
EditText addressEntry = (EditText) findViewById(R.id.addressentry);
String address = addressEntry.getText().toString().trim();
nameValuePairs.add(new BasicNameValuePair("address", address));
这是我的php文件:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$mysqlid = mysql_connect("XXX","XXX","XXX");
mysql_select_db("XXX");
mysql_query("SET NAMES utf8", $mysqlid) ;
$insert_query = mysql_query("INSERT INTO table123 (userid, address) VALUES ('".$_REQUEST['userId']."', '".$_REQUEST['address']."') ");
mysql_close();
?>
</body>
</html>
其中,每个(它是一个矩形符号,但此处未显示-粘贴副本显示如下-?)是一个来自实际地址的字母。在将地址提交到数据库之前,我有一个吐司显示它,它似乎是有效的和可读的
以下是我连接远程数据库的代码:
public void onClick(View addBookmarkView) {
InputStream is = null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("userId", userIdPassed));
EditText addressEntry = (EditText) findViewById(R.id.addressentry);
String address = addressEntry.getText().toString().trim();
nameValuePairs.add(new BasicNameValuePair("address", address));
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(PHP_URL);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
如果我没有在Android应用程序代码或Manifest.xml中的某个地方指定编码,你知道如何运行它吗?
干杯 尝试使用以下方法设置西里尔文条目的编码:
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
您应该检查来自Android的实际请求是什么样子的-在将数据保存到SQL时,还要添加这一行-
file\u put\u contents(“log.txt”,print\r($\u request,1))
并随后检查文件内容-请求数据是否包含西里尔字符。可能它没有这样做,下面是“log.txt”内容:数组([userId]=>1159448580[address]=>.6 Sofia)
在空白处有矩形。。。一个屏幕截图-谢谢你的建议,但它似乎不起作用-现在我甚至没有得到保存的非西里尔字母-我在数据库中只有一个空字段。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$mysqlid = mysql_connect("XXX","XXX","XXX");
mysql_select_db("XXX");
mysql_query("SET NAMES utf8", $mysqlid) ;
$insert_query = mysql_query("INSERT INTO table123 (userid, address) VALUES ('123456789','асдсдасдас 123') ");
mysql_close();
?>
</body>
</html>
асдсдасдас 123
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));