问题:
我有2个文本区域,第一个用于将文本发送到数据库(mysql),第二个用于显示检索到的文本。 但是,从第一个开始的换行符不会应用到第二个。
示例:
hello
world
将显示如下:
hello world
当我检查在$ _POST中发送的数据时,我发现换行符已转换为此'ã€'
Array ( [memo_1] => fff ggg bbb )
和经过编码的网址是这样的:
memo_1: eee%E3%80%80ddd
为简洁起见,从数组中删除了其他数据。
我尝试过的方法:
我尝试使用nl2br,但由于本文中没有\ n,因此无法使用。 我尝试使用str_replace将这些字符更改为\ n,但也没有用。
我不确定为什么会显示这些奇怪的字符,因为我已将编码设置为UTF-8,如果这不是与编码相关的问题,我感到抱歉。
更新:
PHP:5.6.38
mysql:5.7.24,表排序规则为'utf8_general_ci'
该项目在一个无聊的盒子中工作:centos 6
保存:
include('./common/env.php');
include('./login_manager.php');
$virgin = $_POST['virgin'];
$memo_1 = $_POST['memo_1'];
$memo_2 = $_POST['memo_2'];
$call_counterpart = $_POST['call_counterpart'];
$call_status = $_POST['call_status'];
$recall_time_temp = $_POST['recall_time'];
$sql = "UPDATE call_history SET ";
$sql .= "memo_1 = '$memo_1', ";
$sql .= "memo_2 = '$memo_2', ";
$sql .= "call_status = '$call_status', ";
$sql .= "call_counterpart = '$call_counterpart', ";
if ($recall_time != "") {
$sql .= "recall_time = '$recall_time', ";
$sql .= "recall_flag = '1', ";
}
$sql .= "active_flag = '1' ";
$sql .= "WHERE id = '$history_id' ";
}
mysql_query($sql);`
检索:
$sql = "SELECT c.*, s.name staff_name ";
$sql .= "FROM call_history c ";
$sql .= "LEFT JOIN staff s ON c.staff_id = s.id ";
$sql .= "WHERE 1 ";
$sql .= "AND c.active_flag = 1 ";
$sql .= "ORDER BY c.id DESC ";
$rs = mysql_query($sql);
答案 0 :(得分:0)
看来故障根本不在编码中。 公司中的另一位开发人员编写了一些代码行,这些行 干扰 ,这些数据正被发送到我必须修复的服务器,以便发送有效数据。
ps:我还是公司的新人,因此无法理解为什么修改数据并认为这是编码问题。