当我检索MySQL表值到我的PHP Zend框架的应用程序,人物A型和O是从数据库到我的浏览器一样返回这个 。
任何想法可能出现问题?我曾尝试设置一些属性为UTF-8,但仍然发生这种情况......我想我仍然错过了一些东西。
你可以给我一些解决方案,我可以摆脱这一点肯定吗?我需要设置等方面有哪些CONFIGS
谢谢:)
当我检索MySQL表值到我的PHP Zend框架的应用程序,人物A型和O是从数据库到我的浏览器一样返回这个 。
任何想法可能出现问题?我曾尝试设置一些属性为UTF-8,但仍然发生这种情况......我想我仍然错过了一些东西。
你可以给我一些解决方案,我可以摆脱这一点肯定吗?我需要设置等方面有哪些CONFIGS
谢谢:)
当错误编码的字符被读取到浏览器中,他们拿出的还是?有一个编码不一致的地方:
这些字符会以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">
我woudl建议你看看到您的“网站编码”在浏览器中设置。
如果网站不提供编码和你的MySQL/PHP是处理它“正确”这可能发生(例如它设置为“西方1252”,但需要UTF8/Unicode)的
在Firefox中,你可以看到编码通过查看 - >编码(或类似)
你只需要正确设置你的编码为UTF-8。下面是一个最小的有效的解决方案的基本步骤:
header('Content-type: text/html; charset=utf-8');
(也可以指定编码for your document )php.ini
不会覆盖编码。如果你有外国的.htaccess
文件,请检查他们是否也是如此。如果你正确地处理UTF-8,你将不需要0/utf8_decode
,htmlentities
等,并能够正确地输出重音字符未经特殊treatement。
注意:某些地区不被UTF-8来处理,特别是Thaï。
关于Zend_Db_Adapter_Pdo_Mysql确保你的构造使用UTF-8,像这样:
$your_pdo = Zend_Db::factory('Pdo_Mysql', array(
'host' => DATABASE_HOST,
'username' => DATABASE_USERNAME,
'password' => DATABASE_PASSWORD,
'dbname' => DATABASE_DBNAME,
'options' => array('charset' => 'utf8')
));
而且在HTML使用数据之前逃避它:
return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
检查为Content-Type,文件编码等提供所有其他答案。
你可以发布你的'Zend_DB'工厂代码吗?你确定这不是逃避问题吗?您是否设置了Chareset HTTP标头? – 2012-07-31 14:57:01
该数据被从哪个表中整理出来?确保您查看表而不是数据库,因为表可以轻松地使用与数据库不同的排序规则。 – 2012-07-31 14:58:04
我的应用程序目前刚刚开始,我的数据库代码非常小,只处理连接的设置,但我会发布我使用的代码(PS我是一个初学者,所以对我很感兴趣; D ) – jjepsuomi 2012-07-31 15:02:44