首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php从数据库获取"hindi“结果时出错

使用php从数据库获取"hindi“结果时出错
EN

Stack Overflow用户
提问于 2015-12-09 14:43:07
回答 1查看 202关注 0票数 1

我正在尝试获取“印地语”(utf-8)结果从MySQL数据库使用php。

我写了下面的代码..

代码语言:javascript
复制
<?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(印地语)数据。

如果我使用下面的代码来打印单个行,那么

代码语言:javascript
复制
while($myrow = mysql_fetch_row($result)){
echo ($myrow[0]);
echo ($myrow[1]);
echo ($myrow[2]);
}

它工作正常,可以打印utf-8(印地语)数据。

请帮助我,我遗漏了什么,或者有什么错误的实现.

提前感谢..!!

EN

回答 1

Stack Overflow用户

发布于 2015-12-10 10:27:40

mysql_query('SET name=utf8');

应为mysql_query('SET NAMES utf8');。不需要其他集合。

另外,不要使用过时的mysql_*接口,重写为使用mysqli_* (或PDO)。

说到印地语,你是指天成文书,例如हिन्दी吗?

它的utf8十六进制是:E0A4B9 E0A4BF E0A4A8 E0A58D E0A4A6 E0A580

如果你看到像हिनà¥à¤¦à¥€这样的东西,你就会看到"Mojibake“。

未获得预期结果

你得到了什么?

html --应该包含JSON_UNESCAPED_UNICODE的第二个参数,以避免获取“json_encode实体”。

要在PHP中查看十六进制,

代码语言:javascript
复制
$hex = unpack('H*', $text);
echo implode('', $hex);

latin1是不够的;您需要utf8 (或utf8mb4)。

我知道这不是一个完整或连贯的答案,但它为OP提供了几个行动项,以更接近解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34172300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档