如何在CakePHP中查看外语(即Bangla)字符?

时间:2014-11-23 12:44:28

标签: php cakephp character-encoding

这是我在CakePHP中的.ctp文件中的代码:

<div class="AccordionPanel">
        <div class="AccordionPanelTab">জন্ম নিবন্ধন</div>
        <div class="AccordionPanelContent">
            <?php echo $html->link(__('থানা', true), '/ReportBirthRegistrationStations/'); ?>
            <?php echo $html->link(__('অফিসার', true), '/ReportBirthRegistrationOfficers/'); ?>
         </div>
</div>

所以我很清楚我要做的事情:我试图在我的CakePHP项目中的视图代码中编写Bangla字符,我想在我的视图页面中显示它们。

当我尝试加载视图页面时 - 显示奇怪的,不可读的字符而不是Bangla字符。

我包括了这个:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

文件顶部的UTF-8编码,但它仍无法正常工作。

我也在视图布局文件中包含了UTF-8编码,但仍面临问题。

如何在CakePHP中查看Bangla或任何其他外来字符? CakePHP对Bangla有什么支持吗?

我的IDE是Netbeans 8.0.1。

我的CakePHP版本是1.2.5,PHP版本是5.2 [由于在2008-09以来维护的一个非常古老的项目中工作]

修改 - 1:

我尝试添加以下内容 -

-J-Dfile.encoding=UTF-8

在我的Netbeans安装文件夹的etc文件夹中的netbeans.conf文件中。通过这样做,我想确保我的文件以UTF-8编码保存。但我的问题仍未解决。

编辑 - 2:

忘了提一点。无论我试图显示什么,都与我的数据库值无关。这些只是标签,我只想在页面加载时在Bangla中查看这些标签。

3 个答案:

答案 0 :(得分:4)

将此代码添加到〜/ app / config / core.php文件中:

Configure::write('App.encoding', 'UTF-8');

在您的网页部分添加:

 <?php echo $html->charset(); ?> 

答案 1 :(得分:4)

您的网络服务器可能没有为请求设置正确的内容类型。

您可以尝试在beforeRender();

中的AppController中手动设置它

header('Content-Type: text/html; charset=utf-8');

另请注意,在将标头发送到客户端之前向控制器中的输出流写入内容时,编码也将被破坏。 (经常在调试模式下发生)

答案 2 :(得分:1)

实际上,问题发生在default.ctp文件夹中的app/views/layouts文件中。

<meta http-equiv>标签没有UTF-8编码,它是ISO-8859-1编码的。如下所示:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

这是Cake标准 - default.ctp文件夹中的app/views/layouts视图文件在整个应用程序中共享,它定义了所有视图页面的默认行为和共享属性。

由于这是一个非常古老的项目,当时的HTML版本是HTML 4,因此代码是以这种方式编写的。 HTML5支持UTF-8编码。请查看以下内容以获取更多详细信息:http://www.w3schools.com/tags/ref_charactersets.asp

我只需将其更改为UTF-8编码,然后就可以了。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

问题与Cake版本无关,也与PHP版本无关。相反,它完全是关于HTML版本和相应的代码造成了混乱。