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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Hirokazu Sato
こんばんは。

岡山でエンジニアをしています、さとうと申します。
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プラットフォームになると思います。

皆様の中でうまく行っている実績があれば特に環境にはこだわりませんので、
ご教授頂きたいです。
よろしくお願いします。

--

さとうひろかず


Reply | Threaded
Open this post in threaded view
|

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

Masashi Umezawa
こんにちは
梅澤です。

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 <[hidden email]> 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]
Reply | Threaded
Open this post in threaded view
|

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

Hirokazu Sato
梅澤さん

こんばんは。さとうです。

早速のご回答ありがとうございます。
また梅澤さん自ら実際にインストールして試していただいたとのこと、
光栄です。

ご回答頂いた内容を試したところDBへの書込み及び結果の参
照ともに
バッチリうまく行きました。
ありがとうございました。

通信系のエラーメッセージだったので、postgresV2が2バイトの
ハンドリングができないのかと思ってしまい、それ以上考えが
およびませんでした。

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


SeasideだとAjaxも使えるし、Webの入力インター
フェースを作るには、
面白そうだったのでフロントエンドに持ってきて、バックエンドには、
高機能なフリーのRDBMSとしてPosgtreSQLにしています。

では、失礼します。

--
さとうひろかず



On 2007年 10月 30日 , at 23:51, Masashi Umezawa wrote:

> こんにちは
> 梅澤です。
>
> 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 <[hidden email]> 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]
>
>
>