Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Очередная проблема с кодировкой.


Автор: anton4ept 23.7.2007, 23:56
суть проблемы такова:
имеем файл app/controllers/about_controller.rb:
Код

class AboutController < ApplicationController
  def index
    @page_title = "фыва"
  end
end



Имеем шаблон app/views/layouts/application.rhtml:
Код

<html>
<head>
<title><%= @page_title || 'Emporium' %></title>
<%= stylesheet_link_tag "style" %>
</head>
<body>
<%= "<h1>#{@page_title}</h1>" if @page_title %>
<%= yield %>
</body>
</html>


Внимание, проблема...
Если оба файла в UTF-8, то выскакивает ошибка: 
Код

app/controllers/about_controller.rb:5: syntax error, unexpected kEND, expecting $end


Если @page_title делаем на английском - все пучком. 

Если же сохранить файлы в cp-1251, то возникает другая проблема: браузер ощущает это дело, как UTF-8 (видимо, это приходит ему в http-заголовках) и нужно вручную изменять кодировку на cp-1251. 

Кто-нибудь сталкивался? И как решали?

Автор: anton4ept 24.7.2007, 00:15
Попытки прописать в application.rb это

Код

class ApplicationController < ActionController::Base
 before_filter :set_charsets 
  def set_charset 
   if request.xhr? 
   @headers["Content-Type"] = "text/javascript; charset=utf-8" 
   else @headers["Content-Type"] = "text/html; charset=utf-8" 
  end
end 


Приводят к Status: 500 Internal Server Error Content-Type: text/html 

Автор: FunnyFalcon 24.7.2007, 10:05
Думаю, используется старая версия рельс. В этом случае в environments.rb укажите $kcode = 'u' (если не запамятовал) - это указание интерпретатору Ruby воспринимать исходный текст как utf8.

В последних версиях рельс это присваивание выполняется внутри фреймворка.

Автор: max_lapshin 24.7.2007, 20:45
$KCODE='u' но не это проблема. Там прежде всего синтаксис неправильный.

Автор: anton4ept 26.7.2007, 10:24
Цитата(FunnyFalcon @ 24.7.2007,  10:05)
Думаю, используется старая версия рельс. В этом случае в environments.rb укажите $kcode = 'u' (если не запамятовал) - это указание интерпретатору Ruby воспринимать исходный текст как utf8.

В последних версиях рельс это присваивание выполняется внутри фреймворка.

Ruby version 1.8.6
Rails 1.2.3
Использую InstantRails-1.7-win

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)