php查询不使用utf-8字符集

neskvpey  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(367)

我从一篇文章的内容中获取我的URL和标题,但是标题似乎不再是utf-8,并且包含一些时髦的字符,例如“â" 当我回显结果时。知道为什么没有使用正确的字符集吗?我的头文件确实使用了正确的元数据。
我在这里尝试了一些解决方案,但似乎都不起作用,所以我想我应该在下面添加我的代码-以防万一我遗漏了什么。

$servername = "localhost";
$database = "xxxx";
$username = "xxxxx";
$password = "xxxx";
$conn = mysqli_connect($servername, $username, $password, $database);

$post_id = 228;

$content_post = get_post($post_id);
$content = $content_post->post_content;
$doc = new DOMDocument();
$doc->loadHTML('<?xml encoding="utf-8" ?>' . $content);

$links = $doc->getElementsByTagName('a');

$counter = 0;
foreach ($links as $link){

$href = $link->getAttribute('href');
$avoid  = array('.jpg', '.png', '.gif', '.jpeg');

if ($href == str_replace($avoid, '', $href)) {

$title = $link->nodeValue;
$title = html_entity_decode($title, ENT_NOQUOTES, 'UTF-8');

$sql = "INSERT INTO wp_urls_download (title, url) VALUES ('$title', '$href')";
if (mysqli_query($conn, $sql)) {
$counter++;
echo "Entry" . $counter . ": $title" . "<br>";

} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

}

}

更新了echo字符串-在我最初上传代码后更改了这个。我已经尝试了其他职位的解决方案,但没有成功。

cx6n0qe3

cx6n0qe31#

您是否尝试设置连接上的utf8字符集? $conn->set_charset('utf8'); 更多信息:http://php.net/manual/en/mysqli.set-charset.php

2vuwiymt

2vuwiymt2#

似乎你有“双重编码”。你所期望的是

Transverse Abdominis (TVA)

但括号前的空格是一个特殊的空格,可能来自microsoftword,然后被转换为utf8两次。十六进制: A0 -> c2a0 -> c382c2a0 .
是的,链接到“utf8的所有方式通过”将最终提供修复,但我认为你需要更多的帮助。
这个 A0 从拉丁文1转换为utf8,然后将这些字节视为拉丁文1并重复转换。
该连接通过 mysqli_obj->set_charset('utf8') (或类似的)。
那么表中的列应该是 CHARACTER SET utf8mb4 (或utf8)。验证 SHOW CREATE TABLE . (可能是拉丁语。)
html应该以 <meta charset=UTF-8> .
utf-8字符故障;我看到的不是我储存的

相关问题