我在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");
但我没有得到正确的输出。
如何实际设置我的字符集以获取输出。
答案 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']));
}
?>