我在 hostinger.in 中创建了帐户并创建了一个将从数据库表中获取内容的 php。人们说我的问题与 this 重复题。
Things i tried from this question which you are saying as duplicate
他们提供的是在数据库中的所有表和文本列上指定 utf8mb4 字符集。但我的问题在这里有所不同。我已经在表中指定了我的编码。但是在 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']));
}
?>
我数据库中的实际内容是This is தமிழ்
但是我收到的是 "This is\u0ba4\u0bae\u0bbf\u0bb4\u0bcd "。
This是我的网址。
我看到了很多与我相似的问题,并尝试了以下命令,
mysqli_set_charset($this->mysqli,"utf8"); or
mysqli_set_charset($conn,"utf8");
但我没有得到正确的输出。
我实际上如何设置我的字符集以获得我的输出。
最佳答案
你为什么还要调用 json_encode()?
数据库中显然有一个有效的字符串,然后你将其编码为 JSON,是的......会将非 ascii 字符转换为 \uXXXX
转义序列。如果您的消费者是 Javascript 代码(或其他使用 JSON
的代码),您就会这样做。您只是在浏览器中查看它,因此您应该将其输出为 HTML(纯文本恰好是 HTML 的子集)。
只需执行:print $row['quote'];
或者更好的是,让您习惯安全:
print htmlentities($row['quote'], ENT_QUOTES, 'UTF-8');
关于php - 如何在 PHP 中使用其他语言的 echo 或 print,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34339567/