我在从数据库中编码字符时遇到问题。我正在使用带有 win1250 编码的 Postgres,但是无论我在 core.php 中放入什么(现在我有这行代码):
Configure::write('App.encoding', 'iso-8859-1');
有时它会给我一些来自数据库的奇怪字母,例如 È 而不是 Č。我可以做些什么来获得正确的编码。
注意:我无法编辑或更改任何数据库。
我认为您需要做的就是encoding
在数据库连接配置中声明正确的选项,如http://book.cakephp.org/2.0/en/development/configuration.html#database-configuration中所述(稍微滚动一下)。
看看这个特定的段落:
编码
指示向服务器发送 SQL 语句时要使用的字符集。对于除 DB2 之外的所有数据库,这默认为数据库的默认编码。如果您希望在 mysql/mysqli 连接中使用 UTF-8 编码,您必须使用不带连字符的 'utf8'。
我在以前的项目中遇到了同样的问题(法语和西班牙语名称),我只需在配置文件中将以下内容添加到我的$default
连接中:app/Config/database.php
'encoding' => 'utf8'
也许您需要utf8
连接或iso-8859-1
您提到的。
win1250 编码类似于 iso-8859-2 (请参阅http://en.wikipedia.org/wiki/Windows-1250),因此您可能想尝试使用它而不是 iso-8859-1。