gpt4 book ai didi

PHP/MySQL : Certain characters not being encoded properly and appearing as question marks

转载 作者:行者123 更新时间:2023-11-29 01:55:15 25 4
gpt4 key购买 nike

我是 PHP 和 MySQL 的新手,希望有人能帮助我解决这个问题。

我有一个 MySQL 数据库,其中有一个名为“myTable”的表。

服务器连接排序规则和包含文本的单个列均设置为数据类型“utf8_general_ci”,并且所有字符都在数据库中正确显示。

但是,当我使用 PHP 从该表中获取(选择)数据并将其显示在我的页面上时,b浏览器显示问号而不是某些非英语字符

例如与德语字符 ä, ö, ü 一起出现(即 a、o 和 u 上面有两个点)。示例:德语术语“Geschützter Bereich”(en:Restricted Area)显示为“Gesch?tzter Bereich”。

我目前使用以下方法来选择数据,所以我猜我要么需要在选择它时再次应用正确的 (utf-8) 编码,要么在将它回显到页面时再次应用正确的 (utf-8) 编码,但我不知道如何在这里实现这一点。

我发现 PHP 具有以下和其他编码选项,但想知道是否有一种方法可以在页面上只设置一次而不是一直在回显某些内容:

string utf8_encode ( string $data )

有人能告诉我正确的方法吗?
我主要对标准欧洲语言感兴趣,如德语、法语、西类牙语等,目前不必涵盖亚洲语言和希伯来语。

我当前的代码:

    $tbl = "myTable";
$lang = $_GET["lang"];
if(!isset($lang)){
$lang = "de";
}

// fetch db data
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM " . $tbl;
$result = $conn->query($sql);

// store data in temporary array
while($translations = $result->fetch_assoc()){
$arr[] = array("ID" => $translations["tID"], "trans" => $translations[$lang]);
}
$conn->close();

// get required items from array
function fetchByID($arr, $itemID){
foreach($arr as $key => $val){
if($val["ID"] == $itemID){
echo $val["trans"];
}
}
}

并回应它:

echo fetchByID($arr, 1); ...

非常感谢。

最佳答案

请通过添加指定字符集

$conn->set_charset("utf8") 

关于PHP/MySQL : Certain characters not being encoded properly and appearing as question marks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30862644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com