【发布时间】:2015-02-19 23:56:32
【问题描述】:
由于将网页内容从 Joomla cms 迁移到自定义 cms 中,内置于 CakePHP 2.5.7,我必须清理旧内容,删除大量不必要的 html 标签等等。
我制作了一个简单的 shell 脚本,它从旧数据库中读取数据,处理一些数据并存储在新表中。
它们都有相同的 db encodinig,但是在处理和存储数据时,我失去了克罗地亚语 (čćđš) 的一些特定字符。数据会定期从 Web 界面保存,并且不会丢失这些字符。另外,如果我们通过 phpmyadmin 来完成。
问题出在控制台/shell级别。
我在 shell 脚本中添加了以下行:
$this->out('čćšđČĆŠĐ');
控制台显示如下结果:
─Ź─ç┼í─Ĺ─î─ć┼á─É
如何解决?
谢谢
更新:
操作系统:Windows 7 语言:克罗地亚语
更新 2:
joomla 数据库
cakephp 数据库
core.php
Configure::write('App.encoding', 'UTF-8');
数据库配置
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '***********',
'database' => '*********',
'encoding' => 'utf8',
);
编辑 3
我将代码从控制器的外壳中移出。
测试:
// Read data from joomla db base
$contents = $this->JosContent->find('all');
debug ($contents);
返回错误的结果,不正确显示字母čćđ。
- 编辑:出于某种奇怪的原因,如果我导入整个 joomla db,ČĆĐŠŽ 字母无法正确显示,但如果我只导入 joomla joscontent db 表,我可以在 html 中正确显示这些字母。
问题仍然存在于控制台中。
【问题讨论】:
-
您可能想要添加您正在运行的操作系统:)
-
新数据库连接的“编码”参数是否正确设置为 UTF8(在 database.php 中)?
-
更新问题。谢谢
标签: php mysql shell cakephp character-encoding