🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
5 messages
5 total messages Started by Pawel Chmielewski Wed, 26 Jul 2006 23:42
rails - mysql - problem z polskimi znakami
#74
Author: Pawel Chmielewski
Date: Wed, 26 Jul 2006 23:42
51 lines
2431 bytes
Witam.

Natknąłem się na bardzo dziwaczny problem dotyczący połączenia railsowego
ActiveRecord'a i mysqla. Zacznijmy od czegoś, co działa poprawnie:

====================================
@napis2="z bazy2: "
dbh = Mysql.real_connect("localhost", "someuser", "somepassword",
"somedatabase", 3506)
res = dbh.query("SELECT place FROM helps")
res.each do |row|
  row.collect! { |v| v == nil ? "NULL" : v }
  @napis2 = @napis2+row[0]+" "
end
res.free
dbh.close
====================================

Ten kawałek kodu, wstawiony do kontrolera i pokazany w view, zwraca
dokładnie to co chcę:
bazy2: Toruń Ostaszewo Włocławek ąęółśźżć
Czyli, że wszystko jest OK - polskie znaki są poprawnie zakodowane w bazie
(UTF-8), driver odczytuje poprawnie, przeglądarka też - meta charset UTF-8
ustawione.

Z drugiej strony, przy następującym wykorzystaniu railsowegp ORMa:

====================================
x=Help.find(:all)
@napis1="z bazy: "
for i in 0..5
  @napis1=@napis1+x[i].place+"  "
end
@napis1 = @napis1
====================================

dostaję, coś takiego:
z bazy: Toruń Ostaszewo Włocławek ąęółśźżć Bydgoszcz

(celowo koduję ten post w UTF-8, aby było jasne, co widać... Dla tych, co
nie widzą, wyjaśniam, że polskich znaków, w tym napisie powyżej, nie
uświadczysz).

Ot i cały problem. Do głowy przyszło mi tylko to, że coś się musi złego
dziać pomiędzy wyciągnięciem danych z bazy a włożeniem ich do obiektu -
gdzieś tam wewnątrz ActiveRecord.
Niestety, nie znalazłem tego czegoś.

Jakieś pomysły? Ktoś jeszcze się o to potknął?

Pawel
Re: rails - mysql - problem z polskimi znakami
#75
Author: Jaroslaw Zabiello
Date: Thu, 27 Jul 2006 01:25
35 lines
1918 bytes
On Thu, 27 Jul 2006 01:42:12 +0200, Pawel Chmielewski wrote:

> Z drugiej strony, przy następującym wykorzystaniu railsowegp ORMa:
> 
> ====================================
> x=Help.find(:all)
> @napis1="z bazy: "
> for i in 0..5
>   @napis1=@napis1+x[i].place+"  "
> end
> @napis1 = @napis1
> ====================================
> 
> dostaję, coś takiego:
> z bazy: Toruń Ostaszewo Włocławek ąęółśźżć Bydgoszcz
> 
> (celowo koduję ten post w UTF-8, aby było jasne, co widać... Dla tych, co
> nie widzą, wyjaśniam, że polskich znaków, w tym napisie powyżej, nie
> uświadczysz).
> 
> Ot i cały problem. Do głowy przyszło mi tylko to, że coś się musi złego
> dziać pomiędzy wyciągnięciem danych z bazy a włożeniem ich do obiektu -
> gdzieś tam wewnątrz ActiveRecord.
> Niestety, nie znalazłem tego czegoś.
> 
> Jakieś pomysły? Ktoś jeszcze się o to potknął?

Jaką bazę używasz? Jako domyślnie są kodowane pola? utf8 czy inaczej? No i
cz dodałeś w config/database.yml 

encoding: utf8

-- 
Jarosław Zabiełło
http://blog.zabiello.com
Re: rails - mysql - problem z polskimi znakami
#76
Author: Pawel Chmielewski
Date: Thu, 27 Jul 2006 09:01
18 lines
1267 bytes
> Jaką bazę używasz? 
MySQL 5.0.22. Wszystko na linuksie.

> Jako domyślnie są kodowane pola? utf8 czy inaczej? 
UTF-8. Tak wygląda create:

create table helps(
place varchar(20) not null
)Type=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

> No i czy dodałeś w config/database.yml encoding: utf8
Tak.

Wydaje mi się, że pierwszy kawałek kodu jasno pokazuje, że z bazą jest
wszystko w porządku.

Pawel
Re: rails - mysql - problem z polskimi znakami
#77
Author: Jaroslaw Zabiello
Date: Thu, 27 Jul 2006 16:35
11 lines
1194 bytes
On Thu, 27 Jul 2006 11:01:37 +0200, Pawel Chmielewski wrote:

> Wydaje mi się, że pierwszy kawałek kodu jasno pokazuje, że z bazą jest
> wszystko w porządku.

Spróbuj to sprawdzić z konsoli, a nie na serwerze. Na pewno w configu masz
encoding: utf8 a nie utf-8? To drugie nie działa!

-- 
Jarosław Zabiełło
http://blog.zabiello.com
Re: rails - mysql - problem z polskimi znakami
#78
Author: Pawel Chmielewski
Date: Thu, 27 Jul 2006 22:55
18 lines
1561 bytes
Jaroslaw Zabiello wrote:

> On Thu, 27 Jul 2006 11:01:37 +0200, Pawel Chmielewski wrote:
> 
>> Wydaje mi się, że pierwszy kawałek kodu jasno pokazuje, że z bazą jest
>> wszystko w porządku.
> 
> Spróbuj to sprawdzić z konsoli, a nie na serwerze. 
Sprawdziłem. Wynik jest dokładnie taki sam. W pierwszym przypadku
(wyciągnięcie danych na żywca z drivera) zobaczyłem poprawnie polskie
znaki. W drugim (Help.find(:all)) dokładnie to, co opisałem w pierwszym
poście.

> Na pewno w configu masz 
> encoding: utf8 a nie utf-8? To drugie nie działa!
;) A już miałem nadzieję... Niestety mam utf8, tak jak być powinno...

pawel
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads