我遇到一些字符编码/字符集问题
我从表中检索了一些行,其中一行是varchar.每当varchar列中有æ,ø或å时,它们就会被翻译成一个看似虚伪的角色.3个中的每一个都是相同的虚假char.
我创建了这样的表
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
Run Code Online (Sandbox Code Playgroud)
我猜它与collate或charset有关,但是找不到任何可以解决这个问题的东西.
你必须在(至少)3个地方设置字符集:
文件:
<head>
<meta charset="utf-8">
</head>
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅官方w3c页面.
数据库:
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;
Run Code Online (Sandbox Code Playgroud)
万一你想知道,看看utf8_unicode_ci和utf8_general_ci之间的区别.
连接,使用PHP的PDO扩展与DSN中的字符集:
$DBH = new PDO(
'mysql:host=http://example.com;dbname=mydb;charset=utf8',
'username',
'password');
Run Code Online (Sandbox Code Playgroud)