我在项目中使用php和MySQL
我想将Marathi文本存储在MySQL数据库中,我用Google搜索了几个小时,然后将MySQL数据库编码更改为utf-8,从而找到了解决方案的一半。我可以手动(通过PHPMyAdmin)将Marathi字符存储在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 );
}
最佳答案
似乎您没有正确配置代码。之所以得到???
,是因为您没有告诉浏览器如何解析Marathi。将这段代码添加到您的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);