簡體   English   中英

如何在PHP中使用其他語言回顯或打印

[英]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']));
}

?>

我的數據庫中的實際內容是Thisதமிழ்

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

是我的網址。

我看到很多類似於我的問題,並嘗試按照命令,

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

但我沒有得到正確的輸出。

我怎樣才能真正設置我的字符集來獲取輸出。

使用和不使用數據庫調用進行測試。

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

為什么你甚至調用json_encode()? 數據庫顯然有一個有效的字符串,然后你將其編碼為JSON,是的...將非ascii字符轉換為\\uXXXX轉義序列。 如果你的消費者是Javascript代碼(或其他說JSON的東西),那就是你要做的事情。 您只是在瀏覽器中查看它,因此您應該將其輸出為HTML (純文本恰好是其子集)。

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

或者更好,所以你習慣了安全:

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

也許這解決了你的問題,我在這里測試:

在HTML中:

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

用PHP

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

來自鏈接

如果給出錯誤,請嘗試: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']));
}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM