我正在尝试使用php从MySQL数据库中获取"hindi"(utf-8)结果。
我写了以下代码。。
<?php
$connection = mysql_connect("localhost","root","root");
if(!connection)
{
die('Could not connect: ' . mysql_error());
}
mysql_query('SET character_set_results=utf8');
mysql_query('SET name=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_results=utf8');
mysql_query('SET collation_connection=utf8_general_ci');
mysql_select_db('data',$connection);
$result = mysql_query("SET NAMES utf8");
$cmd = "select * from question";
$result = mysql_query($cmd);
$myArray = array();
while($row =$result->fetch_object()){
$tempArray = $row;
array_push($myArray, $tempArray);
}
echo json_encode($myArray);
?>
但我没有得到预期的结果。我想打印Utf-8(印地语)数据。
如果我使用以下代码打印单独的行,则
while($myrow = mysql_fetch_row($result)){
echo ($myrow[0]);
echo ($myrow[1]);
echo ($myrow[2]);
}
它工作良好,并打印utf-8(印地语)数据。
请帮我找不到什么,或者有什么执行错误的地方。。。。
提前感谢。。!!
mysql_query('SET名称=utf8');
应为mysql_query('SET NAMES utf8');
。不需要其他SET。
另外,不要使用不推荐使用的mysql_*接口,重写为使用mysqli_*(或PDO)。
你说的印地语是指DEVANAGARI,比如हिन्दी
吗
其utf8十六进制为:E0A4B9 E0A4BF E0A4A8 E0A58D E0A4A6 E0A580
如果你看到类似हिनà¥à¤¦à¥€
的东西,你就有了"Mojibake"。
没有得到预期的结果
你得到了什么?
json_encode
-应该包括JSON_UNESCAPED_UNICODE
的第二个参数,以避免获得"html实体"。
查看PHP中的十六进制,
$hex = unpack('H*', $text);
echo implode('', $hex);
CCD_ 7是不够的;您需要utf8
(或utf8mb4
)。
我意识到这不是一个完整或连贯的答案,但它为OP提供了几个行动项目,以更接近解决方案。