символ плюс меняется на пробел при отправке данных в php-скрипт и сохранении в таблице mysql через Android


Я пытаюсь отправить список массивов, преобразованный в строку, а затем URL-адрес, закодированный в php-скрипт с помощью запроса POST, который сохранит эти данные в таблице mysql. Все в порядке, за исключением того, что символ "+" в базе данных заменен на ""(пробел).

Это javacode в Android, который я использую для отправки запроса POST

ContactNumbers является ли ArrayList, содержащий список фонем

ContactNumbers.toString() является [+919401557473, +919085425753, +919435448667, +9954263031]

            param = "param="+ContactNumbers.toString(),;

            try {
                String yourURL = "http://54.169.88.65/events/eventmain/get_users2.php";
                URL url = new URL(yourURL);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoOutput(true);
                connection.setDoInput(true);
                connection.setRequestMethod("POST");
                connection.setFixedLengthStreamingMode(param.getBytes().length);
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                OutputStream out = new BufferedOutputStream(connection.getOutputStream());
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
                writer.write(param);
                writer.flush();
                writer.close();
                out.close();
                connection.connect();

Сценарий php get_users2.php, который я использую, выглядит так следует:

<?php

$r = $_POST['param'];
mysql_connect("localhost","root","magento");
mysql_select_db("Eventmain");
$sql = "INSERT INTO `data`(`data`) VALUES ('$r')";
mysql_query($sql);

?> 

Таблица data в mysql выглядит следующим образом:

CREATE TABLE IF NOT EXISTS `data` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Столбец data имеет Collation, равный utf8_general_ci.

Пожалуйста, помогите.

Author: Vipin Kumar, 2015-10-06

1 answers

Дело в том, что вы кодируете параметры URL на стороне Android, а затем кодируете их с помощью своего PHP-скрипта.

К сожалению, декодирование URL-адреса "+" является пробелом.

Вы можете попробовать изменить символ "+" в своем приложении для Android на другой символ, на который не влияет кодировка/декодирование URL, а затем на стороне PHP вы можете заменить этот символ на "+" после декодирования URL.

 1
Author: javatutorial, 2015-10-06 08:06:41