<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: MySQLdb i problem polskich znak&#243;w</title>
    <link>http://blog.zabiello.com/articles/2007/03/16/django-encoding</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>MySQLdb i problem polskich znak&#243;w</title>
      <description>&lt;p&gt;W ko&#324;cu pojawi&#322;a si&#281; wersja stabilna pythonowej biblioteki &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=22307&amp;#38;package_id=15775"&gt;MySQLdb 1.2.2&lt;/a&gt;. Co ciekawsze, jest dost&#281;pna instalacja w formie pakieru &lt;a href="http://peak.telecommunity.com/DevCenter/PythonEggs"&gt;egg&lt;/a&gt; zar&#243;wno dla Pythona 2.4 jak i 2.5. Nie trzeba te&#380; ju&#380; wi&#281;cej u&#380;ywa&#263; instalator&#243;w binarnych pod windoz&#261;. Wystarczy (zak&#322;adaj&#261;c &#380;e mamy zainstalowane &lt;a href="http://peak.telecommunity.com/dist/ez_setup.py"&gt;setuptoolsy&lt;/a&gt;) wykona&#263; komend&#281;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;easy_install&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="constant"&gt;U&lt;/span&gt; &lt;span class="constant"&gt;MySQL_python&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Osoby u&#380;ywaj&#261;ce &lt;a href="http://djangoproject.com"&gt;Django&lt;/a&gt; i MySQL5 musz&#261; pami&#281;ta&#263; aby doda&#263; dodatkow&#261; opcj&#281; do settings.py.&lt;/p&gt;


	&lt;p&gt;W wypadku wersji edge (z &lt;span class="caps"&gt;SVN&lt;/span&gt;), nale&#380;y doda&#263;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;DATABASE_OPTIONS&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;{'&lt;/span&gt;&lt;span class="string"&gt;use_unicode&lt;/span&gt;&lt;span class="punct"&gt;':&lt;/span&gt; &lt;span class="constant"&gt;True&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;charset&lt;/span&gt;&lt;span class="punct"&gt;':&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;utf8&lt;/span&gt;&lt;span class="punct"&gt;'}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;W przypadku starszego kodu to nie pomaga&#322;o. Musia&#322;em wy&#322;&#261;czy&#263; zwracanie wynik&#243;w w postaci obiekt&#243;w unikodowych Pythona. W tym wypadku podzia&#322;a&#322;a opcja:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;DATABASE_OPTIONS&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;{'&lt;/span&gt;&lt;span class="string"&gt;use_unicode&lt;/span&gt;&lt;span class="punct"&gt;':&lt;/span&gt; &lt;span class="constant"&gt;False&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;charset&lt;/span&gt;&lt;span class="punct"&gt;':&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;utf8&lt;/span&gt;&lt;span class="punct"&gt;'}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Widz&#281;, &#380;e Django najwyra&#378;niej idzie w tym samym kierunku co Pylons, tzn. my&#347;li aby wszystkie stringi i prac&#281; z baz&#261; oprze&#263; na obiektach unikodowych a nie stringach &lt;span class="caps"&gt;UTF&lt;/span&gt;-8. W wypadku &lt;a href="http://pylonshq.com"&gt;Pylons&#243;w&lt;/a&gt;, ich najnowszy system szablon&#243;w &lt;a href="http://makotemplates.org"&gt;Mako&lt;/a&gt; standardowo ju&#380; pracuje wewn&#281;trznie na czystych obiektach unikodowych Pythona.&lt;/p&gt;


	&lt;p&gt;Uwaga! Django ma troch&#281; niedopracowanego kodu. Np. panel admina si&#281; sypie jak ustawiona jest powy&#380;sza opcja z w&#322;&#261;czonym unikodem. Trzeba j&#261; &lt;strong&gt;wy&#322;&#261;czy&#263;&lt;/strong&gt;. Ale wtedy z kolei &#378;le si&#281; wy&#347;wietla cz&#281;&#347;&#263; tekst&#243;w zawieraj&#261;ca polskie znaki (np. imi&#281; czy nazwisko redaktora). Jednak lepsza to ni&#380; w og&#243;le brak mo&#380;liwo&#347;ci edycji rekord&#243;w. Wniosek: dla Django u&#380;ywaj drugiej opcji.  Aktualnie kod Django jeszcze nie dor&#243;s&#322; do tego, aby u&#380;ywa&#263; pe&#322;nego unikodu z baz&#261; MySQL.&lt;/p&gt;</description>
      <pubDate>Fri, 16 Mar 2007 02:36:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:29066297-2244-4a17-8e9b-e565744d5f6d</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/03/16/django-encoding</link>
      <category>mysql</category>
      <category>python</category>
      <category>django</category>
    </item>
    <item>
      <title>"MySQLdb i problem polskich znak&#243;w" by marcov</title>
      <description>&lt;p&gt;@vitoo:
Spr&#243;buj: verbose_name = u&amp;#8217;Zale&#380;no&#347;&#263;&amp;#8217;&lt;/p&gt;</description>
      <pubDate>Wed, 16 Apr 2008 19:31:01 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:4946a2a3-a64a-476a-86a7-ec60ec8e0ac3</guid>
      <link>http://blog.zabiello.com/articles/2007/03/16/django-encoding#comment-1570</link>
    </item>
    <item>
      <title>"MySQLdb i problem polskich znak&#243;w" by vitoo</title>
      <description>&lt;p&gt;Witam,
Mam ma&#322;y problem&amp;#8230;
U&#380;ywam najnowszej versji django (svn), pythona, oraz najnowszej ver. bazy mysql&lt;/p&gt;


	&lt;p&gt;Je&#347;li w modelu okre&#347;le pole w bazie z polskimi czcionkami np verbose_name = &amp;#8216;Zale&#380;no&#347;&#263;&amp;#8217; podczas pr&#243;bie syncdb dostaje b&#322;&#261;d:&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Non-ASCII character \xb3&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Rozwi&#261;zanie zaproponowane tutaj przez autora (DATABASE_OPTIONS = {...}), ani tez ustawianie coding nie pomaga&amp;#8230;&lt;/p&gt;


	&lt;p&gt;pozatym na stronie s&#261; polskie czcionki, w bazie tak&#380;e sa poprawnie zapisywane.. ma mo&#380;e ktos jakis pomys&#322; ?&lt;/p&gt;


	&lt;p&gt;(plik models.py eydtowany w eclipse z kodowaniem utf8, i cp.. efekt niestety taki sam)&lt;/p&gt;


	&lt;p&gt;z g&#243;ry dzi&#281;ki&lt;/p&gt;</description>
      <pubDate>Sat, 18 Aug 2007 13:11:16 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:6ff9e295-9fd9-4bf6-9d9a-254320aec7ca</guid>
      <link>http://blog.zabiello.com/articles/2007/03/16/django-encoding#comment-882</link>
    </item>
    <item>
      <title>"MySQLdb i problem polskich znak&#243;w" by Krzysiek</title>
      <description>&lt;p&gt;A mnie to nie pomog&#322;o&amp;#8230; U&#380;ywam wersji SVN,  a mysql 5.0.38&lt;/p&gt;</description>
      <pubDate>Sat, 30 Jun 2007 13:31:41 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:cb6d633a-31d7-4ac3-b9a2-61b5a68a34ec</guid>
      <link>http://blog.zabiello.com/articles/2007/03/16/django-encoding#comment-851</link>
    </item>
    <item>
      <title>"MySQLdb i problem polskich znak&#243;w" by tomek</title>
      <description>&lt;p&gt;Wielce przydatna informacja &amp;#8211; kilka godzin szuka&#322;em informacji jak rozwi&#261;za&#263; ten problem&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Fri, 08 Jun 2007 18:07:28 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:a4cea89a-0ac0-4268-8a7d-1012e1bdc23a</guid>
      <link>http://blog.zabiello.com/articles/2007/03/16/django-encoding#comment-811</link>
    </item>
    <item>
      <title>"MySQLdb i problem polskich znak&#243;w" by satm</title>
      <description>&lt;p&gt;A po co ustawia si&#281; DATABASE_OPTIONS? Nie mam tego ustawionego i Django (wersja svn) &#347;miga mi na MySQL 5 z tabelami unikodowymi. Panel admina si&#281; nie sypie. Co trac&#281;, nie u&#380;ywaj&#261;c tego ustawienia?&lt;/p&gt;</description>
      <pubDate>Mon, 19 Mar 2007 18:58:06 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:0cd5c9b5-b567-4f95-9122-d9cfe1305441</guid>
      <link>http://blog.zabiello.com/articles/2007/03/16/django-encoding#comment-611</link>
    </item>
  </channel>
</rss>
