mysql和php函数未正确显示%percentage符号

zpf6vheq  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(300)

我正在使用codeigniter构建一个web应用程序。
该应用程序有一个自动配置的多播网络接口,根据卡信息生成无效的ip多播。在app.txt conf文件中输入以下数据

auto_ip4=239.106.%card.%number

它扫描卡号,并在日志上输出ip多播,如本例239.105.2.1所示,工作正常,但在前端webgui上出现问题。
我们有一个保存输入数据并将其存储在mysql数据库中的函数;mysql表记录3个值id、name和value
value函数用于存储239.105.%card.%number的数据
当我按save时,录制的内容如下所示: 239.105.?rd.%number 当我导出它时,文本配置文件如下所示

auto_ip4=239.106.?rd.%number

这是将数据值保存到mysql数据库的php表单代码

<?=form_open('config/edit/'.$config->id.'/valid')?>
<table class="form">
    <tr>
        <th>Config param</th>
        <td><?=$config->name?></td>
        <td><input type="text" name="value" value="<?=$config->value?>" /></td>
    </tr>

    <tr>
        <td colspan="2"><input type="submit" value="Save"/></td>
    </tr>
</table>
<?=form_close()?>

另外,这只发生在第一个%符号上,第二个符号被正确存储。

c9qzyr3d

c9qzyr3d1#

看到了吗 239.105.%card.%number 变成 239.105.?rd.%number ,以及您在注解中指定的使用 239.106.%cord.%number 毫无疑问,问题的出现是因为你把事情搞砸了 urldecode() 功能。
看看这个https://www.w3schools.com/tags/ref_urlencode.asp
%作为url编码中要编码的字符的开头。
%ca被解码为ê
你的绳子 239.105.%card.%number 事实上变成了 239.106.Êrd.%number 你看到了吗 ? 或者是因为你的输出应用程序无法显示ê, 或者因为数据库/表的字符集没有管理特定的字符。例如,如果您使用utf-8、utf-16或任何基于拉丁语的字符集,那么在两侧,您将看到ê
在您的示例中显示的所有其他方法都有效: %nu 以%数字表示 %co 在%绳中
不是有效的url编码字符,因此它们存储为纯文本和/或未解码。这就是这种奇怪行为的原因。
如果没有看到代码,很难准确地告诉您如何解决问题。

ua4mk5z4

ua4mk5z42#

这是一种咒语。。我在codeigniter应用程序上的字符集设置为utf-8
config.php php代码:$config['charset']='utf-8';
database.php php代码:$db['default']['char\u set']=“iso-8859-1”;//或latin1$db['default']['dbcollat']=“拉丁语1\u常规\u ci”;//或拉丁文、瑞典文
在我的db mysql上,我也尝试过设置相同的数据库,但是仍然有一些问题。。因为数据输入%card作为?rd存储在数据库中,有趣的是,这种情况发生在将复制的数据写入mysql数据库的write函数上,如果我通过phpmyadmin登录到数据库并在值%card上正确输入数据,那么我将刷新用于输入数据的配置页php,以便从数据库中读取数据,数据正确地显示为%card,但当我试图写回db时,它将其编码错误,并将其保存在db上为?rd

pobjuy32

pobjuy323#

<?php
/**

 */

class Config_model extends Model {
    var $id;
    var $name;
    var $value;

    public function __construct() {
        parent::Model();
    }

    public function findAll() {
        $query = $this->db->get('config');
        return $query->result();
    }

    public function find($id) {
        $query = $this->db->get_where('config', array('id' => $id));
        return $query->row();
    }

    public function findOneByName($name) {
        $query = $this->db->get_where('config', array('name' => $name));
        return $query->row();
    }

    public function countAll() {
        $query = $this->db->get('config');
        return $query->num_rows();
    }

    public function add($data) {
        $this->db->insert('config', $data);
        return $this->db->insert_id();
    }

    public function delete($id) {
        if ($this->db->delete('config', array('id' => $id))) return true;
    }

    public function update($id, $data) {
        $this->db->where('id', $id);
        $this->db->update('config', $data);
    }
}

相关问题