如何在PHP echo或print中使用其他语言


How to use other languages in PHP echo or print

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

我从这个问题中试过的事情,你说的是重复的

他们提供的功能是在数据库中的所有表和文本列上指定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"

这是我的网址。

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

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

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

我如何才能真正设置我的角色集来获得我的输出。

为什么要调用json_encode()?数据库中显然有一个有效的字符串,然后将其编码为JSON,是的。。。将非ascii字符转换为CCD_ 2转义序列。如果你的消费者是Javascript代码(或者其他会说JSON的代码),你会这么做。您只是在浏览器中查看它,所以您应该将其输出为HTML(纯文本恰好是其子集)。

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

或者更好的是,让你习惯于安全:

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

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

<?php
$data = array(
    'name' => 'தமிழ'
    );
header('Content-Type: application/json; charset=UTF-8'); 
print json_encode($data, JSON_UNESCAPED_UNICODE);

编码完全正确!不要尝试删除它。

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);

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

HTML格式:

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

在PHP 中

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

来自链路

如果出现错误,请尝试:编码和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']));
}
?>