HOME | ドキュメント |  ブログ  |  BBS  |  瓦版  | 将棋プロジェクト |  物置小屋   

Trackback は成功したけど 象歩ブログ 既存のサイトへの取り込み方
25 December 2003

utility.py のパッチを作りました

COREBlog
Zope  

excerpt に文字化けが発生するのでパッチ作りました。
文字列を指定された長さで切り出すモジュールが UTF-8 に対応していないようです。Shift_JIS もついでにコードを修正しました。
ここに修正したソースとパッチ置いてみました。

UTF-8 は今のところうまく動作しているようですが、Shift_JIS の方は単体でしか試験していません。環境のある方に試していただけると助かります。
さて、初めて Trackback 使ってみよう。ドキドキ

補足:これは元々 kiyo さんが発見して BBSに投稿してくれた問題です。


Comments
Re: utility.py のパッチを作りました

拝見しました(ざっとですが)
UTF-8を任意文字数で切り詰める処理,ちゃんと動かないのは認識しているのですが,そのままになっている部分です
Pythonの場合,Unicode Stringにすればスライスを使うとちゃんとマルチバイトの境目をまたがない形で処理してくれるので,そのようにするのが正しいのではないかと思っています
EUC-JPやS-JISのマルチバイト文字列と,Unicode文字列をlenなどで比べてみると分かります

Posted by: ats at December 26,2003 10:23
Re: utility.py のパッチを作りました

わざわざありがとうございます。ほとんど C 言語なので恥ずかしい限りです。本当は Python らしく書きたかったのですが。
s = unicode('あいう',"japanese.euc-jp").encode('utf-8')
print len(s)
print len(s[:1])
print len(s[:2])
...
などと試してみましたが、9, 1, 2,... と出力されてしまいました。メソッド等探したり、コーディングの文字コード自体を変更したりしてみましたが、うまくスライスできる機能が見付かりませんでした。
良い機会なので、ちと勉強してみようと思っています。

Posted by: owa at December 26,2003 22:51
Re: utility.py のパッチを作りました

続きです(恥;;
>>> u=unicode(s,'utf-8')
>>> len(u)
3
>>> u[0]
u'\u3042'
>>> type(s)
<type 'string'>
>>> type(u)
<type 'unicode'>
などということがようやく解かりました。encode() と unicode() の区別もついていませんでした。

Posted by: owa at January 06,2004 21:25
Trackbacks

【注意】TrackBack 送信なさる場合、 あなたの記事中に参照リンク (当ブログの URL 記述) が必要です。 トラックバックスパム防止のため、御了承ください。

There is no trackback.
Post a comment











一回プレビューして投稿内容の確認をしてください。その後に投稿可能になります。