从mysql数据库发送和检索阿拉伯数据

时间:2015-05-29 03:33:43

标签: php android mysql utf-8 arabic

我想从mysql数据库带来阿拉伯语数据我写了php代码但它给了我?????关于阿拉伯数据的任何帮助使它成为wokrs ??

<?php header('Content-Type: charset=utf-8'); 
$link=mysqli_connect("localhost","root","","arabicd");
mysql_set_charset('utf8',$link);
if (mysqli_connect_errno($link))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

mysql_query("SET character_set_results = 'utf8'");
mysql_query("character_set_client = 'utf8'"); 
mysql_query("character_set_connection = 'utf8'");  
mysql_query("character_set_database = 'utf8'");
$result = mysqli_query($link,"SELECT question,answer FROM ask ");
while ($row = mysqli_fetch_array($result))
{
$output[]=$row;
}
print(json_encode($output));

if($data){
echo $data;
}
mysqli_close($con);
?>

4 个答案:

答案 0 :(得分:1)

不,请勿使用mysql界面,请使用mysqli 不,请勿使用SET NAMES,请使用mysqli_set_charset

SHOW CREATE TABLE;您可能会发现您要写入的列是CHARACTER SET latin。它需要是utf8。

\u0633之类的文字意味着您需要将JSON_UNESCAPED_UNICODE添加为json_encode的第二个参数。

答案 1 :(得分:1)

在PHP中使用此代码:

$db= mysqli_connect('localhost','root','225352','project');

$SQL= 'SET CHARACTER SET utf8';

mysqli_query($db,**$SQL**);) 
or die ( mysqli_error($SQL) );

答案 2 :(得分:0)

  • 虽然您可以使用set names utf8代替所有令人毛骨悚然的查询,但阿拉伯语没有任何错误,欢呼:)
  • 您正在混合mysql_*mysqli_*这是不允许的
  • 即使允许使用mysql&amp; mysqli个连接可互换,您按照与预期不同的顺序将参数传递给query函数
  • 如果连接失败(或执行任何操作,只需更改执行流程),您应该退出脚本
  • 该行print(json_encode($output));容易出错,如果表中没有结果怎么办?永远不会输入循环并且不会定义$output,因此您必须使用空数组初始化$output,这也是检查结果集是否为空并处理它的好方法在一个单独的块中
  • 此外,如果列的名称为保留关键字,则首选将表名和列括在后面的刻度线(`

修复错误后,以下是代码的工作版本

&#13;
&#13;
<html>

<meta charset="utf-8">
<?php 



$link = mysql_connect("localhost","root","");
if ($link === false)
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit;
}
mysql_select_db("arabicd", $link);
mysql_query("SET NAMES utf8");

$result = mysql_query("SELECT `ask`.`question`,`ask`.`answer` FROM `ask` ", $link);
$output = array();
while ($row = mysql_fetch_array($result))
{
    $output[]=$row;
}

print(json_encode($output));

if(isset($data))
{
	echo $data;
}

mysql_close($link);
?>
</html>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

只需在HTML页面的标记中使用它即可。

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

使用&lt;在元词之前