我尝试连接到mysql数据库并获取 UTF-8 中的字符串。
<?php
$con=mysqli_connect("localhost","root","pass","db");
mysql_set_charset('utf-8');
mysql_query("set names 'utf8'");
mysql_query('set character set utf8');
但是下面的代码回应我,我从db获得的字符串是用 ASCII 编码的。
$result = mysqli_query($con,"SELECT * FROM tweet");
$content =array();
while($row = mysqli_fetch_array($result)) {
$content[] =$row['content'];
}
echo mb_detect_encoding($content[0]);//this line prints: ASCII
mysqli_close($con);
?>
使用下面的代码我得到除'ğ','ş','ı'之外的所有土耳其字符。
$current_encoding = mb_detect_encoding($content[0], 'auto');
for($x=0;$x<sizeof($content);$x++){
$content[$x] = iconv($current_encoding, 'UTF-8', $content[$x]);}
echo mb_detect_encoding($content[0]);//this line again prints: ASCII
如何从 UTF-8 编码的db中获取字符串?
答案 0 :(得分:0)
因为您使用mysqli_connect
连接到数据库,所以需要使用:
mysqli_set_charset( $con, 'utf-8');
而不是
mysql_set_charset('utf-8');
mysql_query("set names 'utf8'");
mysql_query('set character set utf8');
刚连接数据库后。然后,您将无需使用任何mb_detect_encoding或iconv函数,因为假设数据已正确插入,您也将获得正确的结果。
您还应该确保您的表/字段设置了utf8编码,例如utf8_encode_ci