[Squeak-ja: 3761] Re: Squeak日本語とPostgresqlとの接続

Masashi Umezawa umejava @ mars.dti.ne.jp
2007年 10月 30日 (火) 23:51:41 JST


こんにちは
梅澤です。

SeasideとPostgreSQLというのは面白い組み合わせですね。
私もちょっとインストールして試してみました。

Windows XPで、PostgreSQLのデフォルトエンコーディングをUTF8にしています。

con execute: ('insert into fruits values (''スイカ'',''123'')' convertToEncoding: #utf8). 

のようにすると、値がちゃんと入りました。
Squeakの多バイト文字列はUnicodeに準じた独自表現なので、
convertToEncoding: #utf8などを文字列に送って、DBのエンコーディングに
合わせた上でDBに渡す必要があります。

得られるPGResult内の文字列も、単なるByteStringになってしまっているので、
これもエンコードを指定して、Squeakの多バイト文字列に戻す必要があります。

'文字化け文字列' convertFromEncoding: #utf8.

のようにします。

もう少しラッピングするなり、パッチを当てるなりしないと使いにくいですが、
基本的な考え方はこのような感じです。

では。

Hirokazu Sato <sato_hirokazu @ tba.t-com.ne.jp> wrote:
> こんばんは。
> 
> 岡山でエンジニアをしています、さとうと申します。
> seasideを使って、Web経由でDBに書き込みができる自 
> 部門の業務画面を
> 作ってあげようと思い、おおむねできたのでテストで日本語を入力 
> してみたら、
> 以下のエラーがでてうまくDBに書き込みができません。
> 切り分けのため以下のコードを実行してみましたが同様の結果にな 
> ります。
> ("日本語"の部分を半角英数にするとインサートできます)
> 
> | dbconn |
> dbconn _ PGConnection new.
> dbconn startup.
> dbconn execute: 'insert into t-table values  
> (''2007/10/29'',''10:22'',''日本語'',''test'')'.
> dbconn terminate.
> 
> 
> エラー内容:
> "ConnectionClosed: Connection closed while waiting for data."
> 
> 
> 試している環境: OS: OSX 10.3.9
>                                      VM: Squeak 3.8.18beta1U
>                   Image: Seaside-JPatched070105 
>                                      PostgresqlClient:
>                   PostgreSQL Client for Squeak(PosgresV2)
>                    Published version: 1.0
>                    Created: 1 February 2006 5:13:15 pm
> 
>  特に環境にこだわりはありません。
>  会社で利用するときはWindowsやLinuxプラット 
> フォームになると思います。
> 
> 皆様の中でうまく行っている実績があれば特に環境にはこだわりま 
> せんので、
> ご教授頂きたいです。
> よろしくお願いします。
> 
> --
> さとうひろかず
> 

---
[:masashi | ^umezawa]



Squeak-ja メーリングリストの案内