我遇到了一些字符编码/字符集
我从表中检索了一些行,其中一行是varchar。每当varchar列中有æ,ø或å时,它们就会被转换为看似虚伪的字符。 3中的每一个都有相同的虚假信息。
我像这样创建了表
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`account_id` int(11) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`mytext` int(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1402 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
我猜它与collate或charset有关,但是找不到任何可以解决这个问题的东西。
答案 0 :(得分:5)
你必须在(至少)3个地方设置字符集:
文件:
<head>
<meta charset="utf-8">
</head>
有关详细信息,请参阅official w3c pages。
数据库:
ALTER DATABASE `my_database` CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `my_table` CONVERT TO CHARACTER SET utf8;
ALTER TABLE `my_table` MODIFY `my_column` … CHARACTER SET utf8 COLLATE utf8_general_ci;
如果您想知道,请参阅difference between utf8_unicode_ci and utf8_general_ci。
使用PHP的PDO扩展与DSN中的字符集进行连接:
$DBH = new PDO(
'mysql:host=http://example.com;dbname=mydb;charset=utf8',
'username',
'password');
答案 1 :(得分:0)
从数据库中检索记录时,将其设置为UTF8,它将解决您的问题。使用以下代码希望它能帮助您
$con=mysqli_connect("localhost","username","password","db_name");
$con->set_charset("utf8");
$result = mysqli_query($con,"SELECT * FROM mytable");