[英]php query not using UTF-8 charset
我從帖子的內容中獲取了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字符串-最初上傳代碼后更改了此字符串。 我已經在其他帖子中嘗試過解決方案,但沒有成功。
您是否嘗試在連接上設置utf8字符集?
$conn->set_charset('utf8');
看來您具有“雙重編碼”。 你所期望的是
Transverse Abdominis (TVA)
但是,括號前的空間是一個特殊的空間,該空間可能來自Microsoft Word,然后兩次轉換為utf8。 以十六進制表示: A0
> c2a0
> c382c2a0
。
是的,指向“ utf8 all through through”的鏈接最終將提供此修復程序,但我認為您需要更多幫助。
A0
從latin1轉換為utf8,然后將這些字節視為latin1,然后重復轉換。
該連接通過mysqli_obj->set_charset('utf8')
(或類似方法)提供客戶端的編碼。
然后,表中的列應為CHARACTER SET utf8mb4
(或utf8)。 使用SHOW CREATE TABLE
驗證。 (當前可能是latin1。)
HTML應該以<meta charset=UTF-8>
開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.