Discussion:
Django - polskie znaki
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Wojciech Ściesiński
2006-12-04 15:42:19 UTC
Permalink
Witam,
staram się przy użyciu Django stworzyć prostą aplikację.

Platforma Linux, kodowanie znaków ISO-8859-2, baza danych MySQL z
ustawionym kodowaniem UTF8.

Wpisuję po wywołaniu IPython

import from proj.apps.models Osoba

s = Osoba(osobImie = unicode('zażółć','iso-8859-2'))

s.save i wywala błąd

latin-1' codec can't encode character u'\u017c' in position 2: ordinal
not in range(256)

Czy ktoś może mnie naprowadzić jak to rozwiązać ?

Czytam dokumentację modułu codecs
http://docs.python.org/lib/module-codecs.html
ale niestety nie wiem co dalej :-(

Z góry dziękuję za pomoc.

Pozdrawiam
--
Wojciech Ściesiński; ***@NO-SPAMwojteks.net

Wolne Oprogramowanie czyni wolnym...
Popierasz Open Source ? Czytaj http://7thguard.net
r***@gmail.com
2006-12-04 17:57:28 UTC
Permalink
ja używam utf-8 i problemu nie ma, sam panel admina też działa w
UTF-8 więc stosowanie iso nie jest dobrym pomysłem.
Wojciech Ściesiński
2006-12-04 19:38:00 UTC
Permalink
Post by r***@gmail.com
ja używam utf-8 i problemu nie ma, sam panel admina też działa w
UTF-8 więc stosowanie iso nie jest dobrym pomysłem.
Kodowania systemu operacyjnego nie zmienię, zresztą za chwilę będę to
przenosił na Windows z jeszcze innym kodowaniem.

Inne propozycje/uwagi ?

Pozdrawiam
--
Wojciech Ściesiński; ***@NO-SPAMwojteks.net

Wolne Oprogramowanie czyni wolnym...
Popierasz Open Source ? Czytaj http://7thguard.net
r***@gmail.com
2006-12-04 20:23:54 UTC
Permalink
Post by Wojciech Ściesiński
Post by r***@gmail.com
ja używam utf-8 i problemu nie ma, sam panel admina też działa w
UTF-8 więc stosowanie iso nie jest dobrym pomysłem.
Kodowania systemu operacyjnego nie zmienię, zresztą za chwilę będę to
przenosił na Windows z jeszcze innym kodowaniem.
Inne propozycje/uwagi ?
Pozdrawiam
co ma kodowanie systemu do kodowania plików, kodowania strony
określone w nagłówku HTML ? Jeżeli dasz charset na utf-8 i
formularzem wyślesz jakieś dane to zostaną zapisane jako utf-8.
Jeżeli chcesz z pliku wyświetlić jakiś tekst to musi on mieć takie
samo kodowanie jak kodowanie html strony (pod windowsem crimson editor
czy edit pad lite mają opcję wyboru kodowania, iso lub utf-8 lub inne)
Janusz A. Urbanowicz
2006-12-04 18:30:04 UTC
Permalink
Wojciech Ściesiński <***@NO-SPAMwojteks.net> writes:


RTFM. Nie masz zdefiniowanego kodowania _pliku_ w którym to jest zapisane.
--
JID: ***@hell.pl
PGP: 0x46399138
od zwracania uwagi na detale są lekarze, adwokaci, programiści i zegarmistrze
-- Czerski
Janusz A. Urbanowicz
2006-12-04 18:35:05 UTC
Permalink
RTFM. Nie masz zdefiniowanego kodowania _pliku_ w którym to jest
zapisane.
--
JID: ***@hell.pl
PGP: 0x46399138
od zwracania uwagi na detale są lekarze, adwokaci, programiści i zegarmistrze
-- Czerski
Wojciech Ściesiński
2006-12-04 19:36:59 UTC
Permalink
Pewnego dnia osoba, która przedstawiła się jako Janusz A. Urbanowicz
Post by Janusz A. Urbanowicz
RTFM.
Przeczytałem.
Post by Janusz A. Urbanowicz
Nie masz zdefiniowanego kodowania _pliku_ w którym to jest
zapisane.
W nagłówku każdego (models.py, views.py, setting.py, urls.py) z plików mam

#-*- coding: utf-8 -*-

Powinno być inaczej ?

Pozdrawiam
--
Wojciech Ściesiński; ***@NO-SPAMwojteks.net

Wolne Oprogramowanie czyni wolnym...
Popierasz Open Source ? Czytaj http://7thguard.net
Roman 'gryf' Dobosz
2006-12-04 20:05:47 UTC
Permalink
On Mon, 04 Dec 2006 20:36:59 +0100
Post by Wojciech Ściesiński
W nagłówku każdego (models.py, views.py, setting.py, urls.py) z plików mam
#-*- coding: utf-8 -*-
Powinno być inaczej ?
A w jakim kodowaniu _naprawdę_ są?
--
-^- _ costam w tle sobie gra, np:
_ /O)_\// Placebo - Meds - Pierrot The Clown
(_(|__(_(_) grf.
Janusz A. Urbanowicz
2006-12-05 10:33:54 UTC
Permalink
Post by Wojciech Ściesiński
Pewnego dnia osoba, która przedstawiła się jako Janusz A. Urbanowicz
Post by Janusz A. Urbanowicz
RTFM.
Przeczytałem.
Post by Janusz A. Urbanowicz
Nie masz zdefiniowanego kodowania _pliku_ w którym to jest
zapisane.
W nagłówku każdego (models.py, views.py, setting.py, urls.py) z plików mam
#-*- coding: utf-8 -*-
Powinno być inaczej ?
Powinno być tak jakie kodowanie ma plik.
--
JID: ***@hell.pl
PGP: 0x46399138
od zwracania uwagi na detale są lekarze, adwokaci, programiści i zegarmistrze
-- Czerski
Wojciech Ściesiński
2006-12-06 09:22:10 UTC
Permalink
Post by Janusz A. Urbanowicz
Post by Wojciech Ściesiński
W nagłówku każdego (models.py, views.py, setting.py, urls.py) z plików mam
#-*- coding: utf-8 -*-
Powinno być inaczej ?
Powinno być tak jakie kodowanie ma plik.
Ok, zmieniłem adnotację kodowania na zgodną z kodowaniem systemu
operacyjnego (Linux ISO-8859-2). Pliki faktycznie w tym kodowaniu są -
sprawdziłem narzędziem enca.

Wracam do przykładu podanego na wstępie wątku tj.
Post by Janusz A. Urbanowicz
Wpisuję po wywołaniu IPython
import from proj.apps.models Osoba
s = Osoba(osobImie = unicode('zażółć','iso-8859-2'))
s.save()
Do bazy danych (MySQL 4.1.10a) uruchamianej na Linuksie z parametrem
character_set_server=utf8 i sposobem sortowania ustawionym dla tabeli na
utf8_polish_ci trafia jednak tylko "za" tzn. do wystąpienia pierwszego
polskiego znaku :-(

Do samej bazy mogę zapisać polskie znaki - sprawdziłem to przy użyciu
phpMyAdmin.

Macie jakieś sugestie w tym zakresie ?

Z góry dziękuję za pomoc.

Pozdrawiam
--
Wojciech Ściesiński; ***@NO-SPAMwojteks.net

Wolne Oprogramowanie czyni wolnym...
Popierasz Open Source ? Czytaj http://7thguard.net
Rob Wolfe
2006-12-06 09:33:59 UTC
Permalink
Post by Wojciech Ściesiński
Ok, zmieniłem adnotację kodowania na zgodną z kodowaniem systemu
operacyjnego (Linux ISO-8859-2). Pliki faktycznie w tym kodowaniu są -
sprawdziłem narzędziem enca.
Wracam do przykładu podanego na wstępie wątku tj.
Post by Wojciech Ściesiński
Wpisuję po wywołaniu IPython
import from proj.apps.models Osoba
s = Osoba(osobImie = unicode('zażółć','iso-8859-2'))
zastąp powyższą linię tą:
s = Osoba(osobImie = 'zażółć'.decode('iso-8859-2').encode('utf-8'))
--
pozdrawiam
Rob
Jaroslaw Zabiello
2006-12-06 09:39:42 UTC
Permalink
Post by Rob Wolfe
Post by Wojciech Ściesiński
Wpisuję po wywołaniu IPython
import from proj.apps.models Osoba
s = Osoba(osobImie = unicode('zażółć','iso-8859-2'))
s = Osoba(osobImie = 'zażółć'.decode('iso-8859-2').encode('utf-8'))
Albo czysty utf-8 niezalezny od ustawionego coding dla pliku:

s = Osoba(osobImie = 'za\xc5\xbc\xc3\xb3\xc5\x82\xc4\x87')

lub unicodowo:

s = Osoba(osobImie = u'za\u017c\xf3\u0142\u0107')
--
Jarosław Zabiełło
http://blog.zabiello.com
Wojciech Ściesiński
2006-12-07 12:39:52 UTC
Permalink
Post by Rob Wolfe
s = Osoba(osobImie = 'zażółć'.decode('iso-8859-2').encode('utf-8'))
Dziękuję, oczywiście działa.

Pozdrawiam
--
Wojciech Ściesiński; ***@NO-SPAMwojteks.net

Wolne Oprogramowanie czyni wolnym...
Popierasz Open Source ? Czytaj http://7thguard.net
Rob Wolfe
2006-12-04 20:23:25 UTC
Permalink
Post by Wojciech Ściesiński
Witam,
staram się przy użyciu Django stworzyć prostą aplikację.
Platforma Linux, kodowanie znaków ISO-8859-2, baza danych MySQL z
ustawionym kodowaniem UTF8.
Wpisuję po wywołaniu IPython
import from proj.apps.models Osoba
Dla pewności wstaw tutaj poniższą linię i pokaż co pokazuje na konsoli:
print repr("zażółć")

Jeśli masz ustawione kodowanie edytora na iso-8859-2
i to samo podałeś w nagłówku pliku, to poniższa linia
jest prawidłowa.
Post by Wojciech Ściesiński
s = Osoba(osobImie = unicode('zażółć','iso-8859-2'))
s.save i wywala błąd
latin-1' codec can't encode character u'\u017c' in position 2: ordinal
not in range(256)
Czyli wygląda na to, że metoda save próbuje konwertować do latin-1,
a nie latin-2.
Czy w settings.py na pewno ustawiłeś prawidłowo kodowanie:
LANGUAGE_CODE = 'pl-pl'
?
--
pozdrawiam
Rob
Roman 'gryf' Dobosz
2006-12-04 20:31:05 UTC
Permalink
On Mon, 04 Dec 2006 21:23:25 +0100
Post by Rob Wolfe
LANGUAGE_CODE = 'pl-pl'
LANGUAGE_CODE = 'pl'
--
-^- _ costam w tle sobie gra, np:
_ /O)_\// Death - Spiritual Healing - Spiritual Healing
(_(|__(_(_) grf.
Wojciech Ściesiński
2006-12-05 08:49:05 UTC
Permalink
Post by Roman 'gryf' Dobosz
LANGUAGE_CODE = 'pl'
Tak mam ustawione.

Pozdrawiam
--
Wojciech Ściesiński; ***@NO-SPAMwojteks.net

Wolne Oprogramowanie czyni wolnym...
Popierasz Open Source ? Czytaj http://7thguard.net
Loading...