【问题标题】:How insert Marathi using PHP and Mysql如何使用 PHP 和 Mysql 插入马拉地语
【发布时间】:2016-11-16 09:15:36
【问题描述】:

我的项目使用 php 和 MySQL

我想将马拉地语文本存储在 MySQL 数据库中,我搜索了几个小时并通过将 MySQL 数据库编码更改为 utf-8 找到了一半的解决方案。我可以手动(通过 PHPMyAdmin)在 Mysql 数据库中存储马拉地语字符。

但是,当我尝试使用 php 插入一些文本时,我得到“???”(问号)而不是马拉地语字符。

我还需要在 php 中设置编码吗?如果是那怎么办?

这是在数据库中插入数据的代码

public function create_place(){  
    include_once( dirname( __FILE__ ).'/_inc.php' );
      $q = $_REQUEST;
        $person_id=$q['person_id'];
        $title = $q['title'];
        $address = $q['address'];
        $mobile=$q['mobile'];
        $latitude=$q['latitude'];
        $longitude=$q['longitude'];
        $cat_id=$q['cat_id'];
        $create_time=Date( 'Y-m-d H:i:s' );
        $sql="INSERT INTO place(person_id,title,address,mobile,latitude,longitude,cat_id,create_time) VALUE('$person_id','$title','$address','$mobile','$latitude','$longitude','$cat_id','$create_time')";
        $this->db->query($sql);
        $lastid = $this->db->insert_id();
         //echo $lastid;
            include_once( dirname( __FILE__ ). '/SimpleImage.php' );
            $_REQUEST['id'] = $lastid;
            include_once( dirname( __FILE__ ). '/SimpleImage.php' );
            include_once( dirname( __FILE__ ).'/_inc.php' );
            $target= FCPATH. '/assets/uploads/place/';
            $target1=$target.basename(date('m-d-Y_H:i:s').'_'.$_REQUEST['id'].'_'.@$_FILES['image']['name']);
            $img=basename(date('m-d-Y_H:i:s').'_'.$_REQUEST['id'].'_'.@$_FILES['image']['name']);
            move_uploaded_file(@$_FILES['image']['tmp_name'],$target1);
            $this->load->model( 'mplace' );
            $sql="UPDATE place set image='$img' WHERE id='".$_REQUEST['id']."'";
            $this->db->query($sql);
        $this->_render_json( array(
            'message' => 'place Create Successfully',
            'image'=>$this->image_url('place',$img),
        ) );

        $this->_render_json( $data );
}

【问题讨论】:

    标签: php mysql json


    【解决方案1】:

    您似乎没有正确配置您的代码。你得到??? 因为你没有告诉你的浏览器如何解析马拉地语。将这段代码添加到您的 html 中:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    

    然后,检查您存储 Marathi 的列是否具有排序规则类型 utf8_general_ci 。为此,SQL 命令SHOW TABLE STATUS 应显示您的表的属性。如果排序规则不是utf8_general_ci,则通过以下 SQL 命令进行更改:

    ALTER TABLE dbo.MarathiTable 
    MODIFY marathi varchar(100)COLLATE utf8_general_ci;
    

    确保您的插入语句正确配置如下:

    "INSERT INTO `comments`(id,comment) values (N'$id',N'$comment')";
    

    这里,前缀 N 告诉 SQL 引擎它插入的值是国家区域语言字符集。

    另外,在程序的开头写下这个,将所有重要的变量设置为utf8。因此,您可以执行所有其他操作而无需担心编码。

    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
    

    【讨论】:

      【解决方案2】:

      在查询mysql_set_charset( $con, 'utf8');mysqli_set_charset( $con, 'utf8'); 之前使用它

      在数据库结构中保持其排序规则为utf8_general_ci

      这将解决您的问题。

      【讨论】:

        猜你喜欢
        • 2018-03-26
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 1970-01-01
        • 2011-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多