问题:
当我从 MySQL 表中检索值到我的 PHP Zend Framework 应用程序时,字符 ä 和 ö 会像这样从数据库返回到我的浏览器。
有什么想法可能会出现问题吗?我已经尝试将一些属性设置为 UTF-8,但仍然会发生这种情况......我想我还是错过了一些东西。
您能否提供一些解决方案,我可以确定如何摆脱它?我需要设置什么配置等等。
谢谢你:)
最佳答案
当浏览器读取错误编码的字符时,它们会显示为 � 或 ?。某处存在编码不匹配:
- 在您的浏览器中
- 在数据库表整理
- 在 HTML 字符集中
这些字符可以在 Unicode UTF-8 中使用,因此您应该验证您的数据库表排序规则是 utf8_bin
或类似的,因为如果您想以 UTF-8 瑞典语存储所有内容,您可能使用 utf8_swedish_ci
在您的浏览器中,确保您的内容编码设置为自动检测。
要在 MySQL 中创建一个 UTF-8/utf8_bin 表,这里是一个例子:
CREATE TABLE `sample` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
要更改现有表以使用 UTF-8,请使用以下命令:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
This post对于是否使用 CONVERT TO CHRACTER SET utf8
注意 CHARSET
和 COLLATE
必须同时设置,否则会自动得到 COLLATE=utf8_general_ci
对于 HTML,可以使用以下方式设置字符集:
<meta charset="UTF-8">
关于php - ä ö 字符编码,在 PHP 中,Zend MySQL- 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11742916/