作者: MATSUI Fe2+ Tetsushi
日時: 2009/8/19(14:50)
Fe2+ です。

At Wed, 19 Aug 2009 10:55:23 +0900,
藤岡和夫 wrote:
> Safariのブックマークを解析できるようにしたいなと思って、調べると、Apple
> のデータはplistというフォーマットに統一されているようです。
> 
> 標準ライブラリにplistを読み書きするライブラリがあったので、次のようなス
> クリプトを書いたのですが、例によって、Unicodeのところで躓いています。
> 
> -----^
> import sys, plistlib
> pathOrFile = sys.argv[1]
> pl = plistlib.readPlist(pathOrFile)
> print(pl)
> -----$
> 
> Windows XP上でのActivePython3.1の実行結果:
> 
> C:\Documents and Settings\%username%\Application Data\Apple Computer\Safari>python
>  plist.py Bookmarks.plist
> Traceback (most recent call last):
>   File "plist.py", line 4, in <module>
>     print(pl)
> UnicodeEncodeError: 'cp932' codec can't encode character '\xe9' in position 3576
> 6: illegal multibyte sequence
> 
> 対処法は如何に?

問題はデフォルトエンコーディングの cp932 と .plist の utf-8 (多分) が
合っていないことから起こっているのだと思います。

1. デフォルトエンコーディングを変える。
   cp932 を指定している sitecustomize.py か何かを書き変える
2. 自分で変換する。
   codecs.EncodedFile で変換したファイルを readPlist に渡す

どちらかじゃないでしょうか。
-- 
MATSUI "Fe2+" Tetsushi