你應該確保你的表有正確的編碼,並在連接後立即運行SET名稱。
我準備了簡單的測試。嘗試運行它以確保一切正常。
1)創建數據庫testencoding和下面的代碼導入到它
CREATE TABLE IF NOT EXISTS `sample` (
`id` int(11) NOT NULL,
`value` varchar(255) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
--
ALTER TABLE `sample`
ADD PRIMARY KEY (`id`);
2)具有以下內容創建簡單的PHP腳本並運行它:
<?php
header('Content-Type: text/html; charset=utf-8');
mb_internal_encoding('utf-8');
$subjectvalue='ų ų';
$link = mysqli_connect("localhost","root","","testencoding");
mysqli_query($link,"SET NAMES 'utf8'");
mysqli_query($link,"INSERT INTO sample(`value`) VALUES('".mysqli_real_escape_string($link,$subjectvalue)."')");
$result = mysqli_query($link, "SELECT * FROM sample");
echo "<br /><br />Data from database<br /><br />";
while ($data = mysqli_fetch_assoc($result)) {
echo $data['id'].' '.$data['value']."<br />";
}
3)在我的電腦的所有結果如預期:
從PHP文件輸出我有:
Data from database
1 ų ų
在phpMyAdmin我:
ų ų
所以一切工作正常。試試看,並與我的結果比較