如何在PHP中使用其他语言回显或打印

时间:2015-12-17 16:26:16

标签: php mysqli

我在hostinger.in中创建了一个帐户并创建了一个将从数据库表中获取内容的php。人们说我的问题与this问题重复。

  

我从this问题尝试过的事情,你说的是重复的

他们提供的是在数据库的所有表格和文本列中指定utf8mb4字符集。但我的问题在这里有所不同。我已经在TABLE中指定了我的编码。但是,当在php中打印时,它没有正确显示结果。

他们提供的另一件事是使用下面的代码

$mysqli->set_charset('utf8mb4');       // object oriented style
mysqli_set_charset($link, 'utf8mb4');  

我也用过它,但我没有输出。

这是我的db.php

<?php

$con=mysqli_connect("HOST","mysql","mypass","u558167714_mydb");

if(!$con)
{
echo "Connection error... ".mysqli_connect_error();
}
else
{
echo "Connection Successful..."
}
?>

我的index.php

<?php
require_once 'db.php';
$query =  "SELECT * FROM quotes LIMIT 1";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_array($result)){
print(json_encode($row['quote']));
}

?>

我的数据库中的实际内容是这是தமிழ்

但是我得到的是“这是\ u0ba4 \ u0bae \ u0bbf \ u0bb4 \ u0bcd”

This是我的网址。

我看到了许多类似于我的问题,并尝试了以下命令,

mysqli_set_charset($this->mysqli,"utf8"); or
mysqli_set_charset($conn,"utf8");

但我没有得到正确的输出。

如何实际设置我的字符集以获取输出。

4 个答案:

答案 0 :(得分:3)

使用和不使用数据库调用进行测试。

<?php

$data = array(
    'name' => 'தமிழ'
    );

header('Content-Type: application/json; charset=UTF-8'); 
print json_encode($data, JSON_UNESCAPED_UNICODE);

答案 1 :(得分:3)

编码完全正确!不要试图将其删除。

JSON适用于Javascript,Javascript知道如何处理\x...转义的字符。 如果你这样做:

<script>
var quote = <?php echo json_encode($quote); ?>;
document.write(quote);
</script>

您将看到解码已正确完成。

您可以使用http://se2.php.net/manual/en/json.constants.php作为选项的常量(我认为它是JSON_UNESCAPED_UNICODE) - 将其关闭但不推荐使用

如果您不使用Javascript和/或HTML,请不要使用json_encode()。

要超级正确,你应该使用:

<?php
// code to fetch data...
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data);

答案 2 :(得分:3)

为什么你甚至调用json_encode()?数据库中明显有一个有效的字符串,然后你将其编码为JSON,这是...将非ascii字符转换为\uXXXX逃逸序列。如果您的消费者是Javascript代码(或者说JSON的其他内容),那么您将会这样做。您只是在浏览器中查看此内容,因此您应将 输出为HTML (纯文本恰好是其子集)。

只需:print $row['quote'];

或者更好,以便您习惯安全:

print htmlentities($row['quote'], ENT_QUOTES, 'UTF-8');

答案 3 :(得分:2)

也许这解决了你的问题,我在这里测试过:

HTML中的

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
PHP中的

header('Content-Type:text/html; charset=UTF-8'); 

来自link

如果出错,请尝试: utf8_encode和utf8_decode。

例如:echo utf8_encode($ string);

更新例如:index.php文件

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php
require_once 'db.php';
$query =  "SELECT * FROM quotes LIMIT 1";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_array($result)){
print(json_encode($row['quote']));
}

?>