2008年10月25日

久しぶりにToscaWidgetsを使ってみたよ

はまった部分をメモ
ToscaWidgetsでフォームに値を設定するときに、内部ではエンコーディング指定なしでunicodeコンストラクタを呼んでいる。
これは、makoでもgenshiでも同じっぽい。
で、sys.getdefaultencoding()はasciiになっているわけで、マルチバイト文字を含む通常文字列を渡すと、エンコードエラーになる。
ユニコード文字列を渡せば回避できる。
フォームの内容はリクエストから取り出している。今使ってるのはwebobだが、このRequestオブジェクトのparamsは、リクエストのcontent-typeに文字コードが設定されていないと、通常文字列になってしまうので、取り出す前にcharsetアトリビュートをutf-8にしてあげればOK。