Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 没有从Android应用程序向MySQL数据库插入正确的西里尔字母条目_Php_Android_Mysql - Fatal编程技术网

Php 没有从Android应用程序向MySQL数据库插入正确的西里尔字母条目

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

我目前正在开发一个Android应用程序,它使用一个远程MySQL数据库来写/读地图上用户位置的书签。我通过反向地理定位获取一个位置的地址,然后用以下代码将其传递到一个php文件:

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"));