PapaTube
Up one level2008/05/16
「恋するニワトリ」と読めない
by
Papasan
—
posted at
2008-05-16 20:32
last modified
2008-05-16 20:32
PapaTube の「お気に入り」をサーバーへ保存し、再度ダウンロードするとタイトルなどが\xe6\x81\...のようになってしまいます(添付画像参照)。
FireFoxからサーバーに送信した時点で変になっているようです。この\xe6\x81\...を元の文字列に戻せないのでしょうか?
- Category(s)
- PapaTube
- The URL to Trackback this entry is:
- http://papasan.org/papablog/554/tbping
(トラックバック元のページには"Papasan"や"papasan"または言及リンクの記述が必要です。)
恋するニワトリ 文字化け問題を解決する
2008/05/17
恋するニワトリ月に向かってコケッコッコー
by
Papasan
—
posted at
2008-05-17 10:51
last modified
2008-05-17 10:53
sekoさんの助言と問題解決シート のおかげで、ほぼ問題をクリアーできたと思います。
問題解決シートの「質問3.現状はどうなっているか?何が起こっているか?何が感じられるか?どんな事実があるか?どんなデータがあるか?○:事実、☆:感情、△:オピニオン」に着目して、ブラウザからの電文(古めかしい表現ですが)の流れを追ってみました。
Zope側のスクリプトで文字列の操作を行っていると、「その操作はストリングに対して行ってくだされ、辞書には使えません、バーロ」とZopeの中のPythonから怒られました。
ZopeのREQUEST.formの中身は{という辞書だったあ。
data_favorites : コケコッコーデータの文字列}REQUEST.form['data_favorites']で中身を取り出しローカルファイルに書き出すと、添付画像のkokekokkoのようになってました。
多分、これで行けそうです。
- Category(s)
-
自鯖おやじ
unicode()で元に戻せます。
>>> stru=u"恋するニワトリ"
>>> stru
u'\u604b\u3059\u308b\u30cb\u30ef\u30c8\u30ea'
>>> stru.encode('utf-8')
'\xe6\x81\x8b\xe3\x81\x99\xe3\x82\x8b\xe3\x83\x8b\xe3\x83\xaf\xe3\x83\x88\xe3\x83\xaa'
>>> str_utf8=stru.encode('utf-8')
>>> str_utf8
'\xe6\x81\x8b\xe3\x81\x99\xe3\x82\x8b\xe3\x83\x8b\xe3\x83\xaf\xe3\x83\x88\xe3\x83\xaa'
>>> unicode(str_utf8,'utf-8')
u'\u604b\u3059\u308b\u30cb\u30ef\u30c8\u30ea'
[papasan@main ~]$ python
Python 2.3.6 (#1, Dec 31 2007, 15:48:53)
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> stru=u"恋するニワトリ"
>>> stru
u'\xe6\x81\x8b\xe3\x81\x99\xe3\x82\x8b\xe3\x83\x8b\xe3\x83\xaf\xe3\x83\x88\xe3\x83\xaa'
>>> stru.encode('utf-8')
'\xc3\xa6\xc2\x81\xc2\x8b\xc3\xa3\xc2\x81\xc2\x99\xc3\xa3\xc2\x82\xc2\x8b\xc3\xa3\xc2\x83\xc2\x8b\xc3\xa3\xc2\x83\xc2\xaf\xc3\xa3\xc2\x83\xc2\x88\xc3\xa3\xc2\x83\xc2\xaa'
>>> str_utf8=stru.encode('utf-8')
>>> str_utf8
'\xc3\xa6\xc2\x81\xc2\x8b\xc3\xa3\xc2\x81\xc2\x99\xc3\xa3\xc2\x82\xc2\x8b\xc3\xa3\xc2\x83\xc2\x8b\xc3\xa3\xc2\x83\xc2\xaf\xc3\xa3\xc2\x83\xc2\x88\xc3\xa3\xc2\x83\xc2\xaa'
>>> unicode(str_utf8,'utf-8')
u'\xe6\x81\x8b\xe3\x81\x99\xe3\x82\x8b\xe3\x83\x8b\xe3\x83\xaf\xe3\x83\x88\xe3\x83\xaa'
>>>
[root@main ~]# python
Python 2.3.6 (#1, Dec 31 2007, 15:48:53)
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> hoge_utf8 = 'ほげ'
>>> hoge_utf8
'\xe3\x81\xbb\xe3\x81\x92'
>>> print hoge_utf8
ほげ
>>> hoge_unicode = unicode(hoge_utf8, 'utf-8')
>>> hoge_unicode
u'\u307b\u3052'
>>> print hoge_unicode
ほげ
>>>
プリントの問題ではなく、上の部分でユニコードの文字列を作っているのだと思います。
http://d.hatena.ne.jp/kakurasan/20080516/p1