ÜÄÖß Umlaute kaputt in Ruby on Rails und MySQL [broken umlauts]

Hier die Lösung, wenn nur “??” für sämtliche Sonderzeichen ausgegeben wird in Ruby on Rails (wenn man Standardeinstellungen verwendet):

Update: Klaus hat in den Kommentaren eine bessere Lösung vorgeschlagen:
Einfach den Entwicklungsstadien (development, test, production) encoding: utf8 zufügen. Sieht dann so aus:
projekt/config/database.yml

development:
  adapter: mysql
  database: projekt_development
  username: root
  password:
  socket: /tmp/mysql.sock
  encoding: utf8
test:
  adapter: mysql
  database: projekt_test
  username: root
  password:
  socket: /tmp/mysql.sock
  encoding: utf8
production:
  adapter: mysql
  database: projekt_production
  username: root
  password:
  socket: /tmp/mysql.sock
  encoding: utf8

Hier die veraltete Lösung:

class ApplicationController < ActionController::Base
  before_filter :configure_charsets
  private
  def configure_charsets
    @response.headers["Content-Type"] = "text/html; charset=utf-8"
    # Nur ab MySQL 4.1
    suppress(ActiveRecord::StatementInvalid) do
    ActiveRecord::Base.connection.execute 'SET NAMES UTF8'
  end
end
Ähnliche Posts:
» gem1.8 install mysql (MySql Ruby C bindings) in debian
» Ruby on Rails with Leopard (localhost, sites, mysql, rmagick)
» Mit Mac und Imagemagick: Tiff Bild reparieren
» Rails: JPG Bilder kaputt beim Upload (grauer Balken)

5 Responses to “ÜÄÖß Umlaute kaputt in Ruby on Rails und MySQL [broken umlauts]”


  • Hey,

    es gibt eine bessere Lösung für diese Problem (die auch mehr den Ruby weg entspricht).

    der Response Header kann dabei stehen bleiben (obwohl ich mir ein layout für HTML-Seiten schreiben würde und utf-8 da als meta angabe reinschreiben).
    Die SQL-Anweisung kann in deiner Lösung gelöscht werden und einfach in die Datei Projekt/config/database.yml die Zeile:
    encoding: utf8
    einfügen (für alle Entwicklungsstadien (development, test, production)).

    gruss Klaus

  • DANKE KLAUS!!!

  • Danke an euch beide, so einfach kann es :-)

  • Für PostgreSQL wäre das unicode statt utf8, z.B.:

    development:
    adapter: postgresql
    encoding: unicode
    database: myproject_development
    username: postgres
    password: 809jljldki878
    host: localhost

    http://wiki.rubyonrails.org/rails/pages/HowToUseUnicodeStrings

  • Heftig, ich habe never ever fur moglich gehalten dass dies real so klappt :-)

Leave a Reply