我正在使用php和MySQL作为我的项目
我想将Marathi文本存储在MySQL数据库中,我用Google搜索了几个小时,通过将MySQL数据库编码更改为utf-8找到了一半的解决方案。我可以手动(通过PHPMyAdmin)在Mysql数据库中存储Marathi字符。
但是,当我尝试使用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 );
}
答案 0 :(得分:0)
尝试类似的事项 -
$title=utf8_encode($q['title']);
希望这会有所帮助。
答案 1 :(得分:0)
您好像没有正确配置代码。您收到???
,因为您没有告诉您的浏览器如何解析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);
答案 2 :(得分:0)
在您的查询mysql_set_charset( $con, 'utf8');
或mysqli_set_charset( $con, 'utf8');
在数据库结构中,将其排序规则保持为utf8_general_ci
这将解决您的问题。