2014-11-23 2 views
3

Вот мой код внутри .ctp файла в CakePHP:Как просматривать символы на иностранном языке (например, Bangla) в CakePHP?

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

Так что это довольно ясно, что я пытаюсь сделать: я пытаюсь писать символы Bangla внутри моей точки зрения кода в моем CakePHP проекте, и Я хочу показать их на моей странице просмотра.

Когда я пытаюсь загрузить страницу просмотра - вместо символов Bangla появляются странные, нечитаемые символы.

Я включил это:

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

кодировку UTF-8 в верхней части файла, но все же это не сработало.

Я включил кодировку UTF-8 в файлы макета вида, но все же столкнулся с проблемой.

Как я могу просмотреть Bangla или любые другие иностранные символы в CakePHP? Есть ли поддержка в CakePHP для Bangla?

Моя IDE - NetBeans 8.0.1.

Мои CakePHP версии 1.2.5 и PHP версии 5.2 [из-за работы в очень старом проекте, который поддерживается начиная с 2008-09]

Edit - 1:

I «ве пытались добавить следующее -

-J-Dfile.encoding=UTF-8 

в моем netbeans.conf файл в папке и т.д. моей папке установки Netbeans. Делая это, я хотел убедиться, что мой файл сохранен в кодировке UTF-8. Но моя проблема все еще не решена.

Edit - 2:

забыл упомянуть один важный момент. Независимо от того, что я пытаюсь отобразить, не имеет ничего общего с моими значениями базы данных. Это просто ярлыки, я просто хочу просмотреть эти ярлыки в Bangla при загрузке страницы.

+2

Убедитесь, что вы удалили вызов 'Html-> charset(), если вы используете макет по умолчанию, и убедитесь, что' App.encoding' в вашем 'core.php' установлен в' UTF-8 ', что ваш сервер отвечает' UTF-8' в заголовке 'Content-Type', что ваши файлы на самом деле кодируются UTF-8 и что используемый шрифт может отображать ваши символы. ps, нет CakePHP 1.7 – ndm

+0

@ndm Пожалуйста, проверьте мой исправленный пост. –

+0

Является ли выход таким, как ???? ? –

ответ

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"> 

Это стандартный торт - файл default.ctp вида в папке app/views/layouts распределяется по всей заявке и определяет поведение по умолчанию и общих атрибуты всех страниц просмотра.

Поскольку это очень старый проект, а версия HTML тогда была HTML 4, код был написан таким образом. Кодировка UTF-8 поддерживается HTML5. Для получения дополнительной информации проверьте следующее: 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

Добавьте этот код в ваш ~/приложение/Config/core.php файла:

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

И в вашей странице раздела добавить:

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

Я уже пробовал выше. Но это не сработало. –

4

Ваш веб-сервер не, вероятно, не установлено правильно тип контента для запроса.

Вы можете попытаться установить его вручную в своем AppController в beforeRender();

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

Кроме того, обратите внимание, что когда вы пишете что-то в выходной поток в контроллере, прежде чем заголовки посылаются клиенту, что также кодировка будет нарушена. (Бывает часто в режиме отладки)

Смежные вопросы