2014-11-23 30 views
3

这是我在CakePHP中.ctp文件中的代码:如何在CakePHP中查看外语(即Bangla)字符?

<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字符。

我这包括:在文件的顶部

<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.conf文件在我的NetBeans安装文件夹的etc文件夹。通过这样做,我想确保我的文件以UTF-8编码保存。但是我的问题仍然没有解决。

编辑 - 2:

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

+2

确保您在使用默认布局的情况下已经移除了'Html-> charset()'调用,并检查'​​core.php'中的'App.encoding'设置为'UTF-8 ',你的服务器在Content-Type头部使用'UTF-8'响应,你的文件实际上是UTF-8编码的,而且正在使用的字体可以显示你的字符。 ps,没有CakePHP 1.7 – ndm 2014-11-23 13:02:13

+0

@ndm请检查我更正的帖子。 – 2014-11-23 16:40:13

+0

输出像???? ? – 2014-11-24 04:33:19

回答

1

实际上,问题出在文件夹中的default.ctp文件中。

<meta http-equiv>标记没有UTF-8编码,它是ISO-8859-1编码。像下面这样:

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

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

由于这是一个非常古老的项目,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版本和相应的代码。

4

将此代码添加到您的〜/应用/配置/ core.php中的文件:

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

而在你的网页部分添加:

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

我已经试过上述。但它没有奏效。 – 2014-11-27 03:46:30

4

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

你可以尝试在你的AppController中的beforeRender()中手动设置它;

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

还要注意的是,当你写的东西到了流中的控制器之前,头被发送到客户端,也该编码将被打破。 (经常在调试模式下发生)