HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0205
としあきHSP3の文字コード6解決


としあき

リンク

2007/2/5(Mon) 21:23:22|NO.5446

HSPをクライアントにして、ネット上のcgiやデータベース(db)に接続し、
データのやり取りをしようと思っています。

で、日本語の扱いに関してですが、HSPはwindowsアプリケーションなので、文字コードって
やっぱりシフトJISなんでしょうか?
webサーバは大抵unixなので、文字コードはeuc-jpで、今使っているサーバのdbもEUC-JPを指定しているので、
HSPクライアントで送られたデータは、EUC-JPに変換して、CGIやdbに書き込み、
そしてcgiやdbからデータを取り込むときは、euc-jpになっているデータを、シフトjisに変換してから、
HSPクライアントに送ったほうが良いんですよね?

ちょっとHSPと関係ない話かもしれませんが、どうか教えてください。



この記事に返信する


Irisawa

リンク

2007/2/5(Mon) 22:17:13|NO.5448

少なくてもWin版のHSPはSJISです。
WinAPI自体、SJISかUnicodeしか使用できませんので...。
実際の所、そういうのは文字コードの関係もあり、あまりHSPに向いていない部分だったり
しますよね。
一応、Unicode(UTF-8ではない)文字列に変換はできますがHSP内部で使用することを想定
していませんし、それ以外の文字コードに変換する機能は標準ではないので自分で実装
するしかないですね。
この辺のサポートももう少し強化されるといいのかも知れませんね。



としあき

リンク

2007/2/5(Mon) 22:43:59|NO.5449

早速の返信ありがとうございます。

やっぱり現実的な問題解決法として、私はperlでcgiを書いているので、jcode.plを使って、
HSPクライアントから送られたデータをEUC-JPに変換して、ファイルなりdbに書き込み、
逆にcgiやdbのデータを、HSPクライアントに送信する前に、jcode.plでシフトJISに変換するのが
正しい対処法でしょうか?

HSPとは関係ないですが、最近のperlは5.8以上なので、日本語変換にはEncode.pmがありますが、
自分にはちょっと難しいので、jcode.plを使っても大丈夫でしょうか?

あと、前から聞きたかったのですが、私は未だにHSP3.0をつかっているけど、
HSP3.1β6に乗り換えたほうが良いでしょうか?
新機能を使いたいけど、β版でなので今まで二の足を踏んでいました・・・



As

リンク

2007/2/6(Tue) 02:45:29|NO.5454

HSPはSJISで文字等を描画しますが、HSPでつくったクライアント自体に文字を表示させる
目的ではなく、データのやり取りそのものだけの場合なら変換しなくてもかまいません。

 クライアントに文字データとして表示させるにはSJISに変換する必要がありますが、
SJIS以外の文字コードに依存する文字データ等は表示できなくなるので少しここは
工夫が必要になるかと思いますが、まず変換して表示させれば問題はないでしょう。
HSPクライアント側から送信されるデータももともとはSJISなので。



Irisawa

リンク

2007/2/6(Tue) 11:08:56|NO.5456

HSPは文字コードをSJISと断定して処理するためHSP側で処理する場合はSJIS以外の
文字コードを使用するのはお勧めしません。
Perlなどを経由するならばそちらで変換してやるのが一番でしょう。
Perl 5.8以降でもjcode.plやJcode.pmは使用できますがEncode.pmを使用することが推奨
されています。
非常に使いづらいんですけどね。


use Encode; my $euc = encode('eucjp', decode('shiftjis', 'あいうえお')); print "EUC-JP: $euc\n"; my $sjis = encode('shiftjis', decode('eucjp', $euc)); print "SJIS: $sjis\n"; exit;



Irisawa

リンク

2007/2/6(Tue) 11:24:21|NO.5457

補足、上記のスクリプトはSJISで保存してください。
また、encode/decode関数で'shiftjis'は'sjis'としてもいいようです。



としあき

リンク

2007/2/6(Tue) 21:03:36|NO.5474

Asさん、Irisawaさん、返答ありがとうございます。

>>Asさん
確かに、SJISのデータを入れたり出したりするだけなら、変換の必要はないようですね。
dbに入れた日本語も、phpMyAdminでテーブルを見ると文字化けしていますが、
検索やデータ出力はちゃんと出来ていますし。
でも、ネット上で不特定多数の人が使うと想定すると、その文字化けがどんな影響するのか、
対して知識が無い自分としては、不安になってしまいます。

>>Irisawaさん
Encode.pmのサンプルリスト、ありがとうございます。これで、どうやって変換できるか分かりました。
Irisawaさんのおかげで、旧式のjcode.plを使わずに、最新のEncode.pmの恩恵にあずかることが出来そうです。
Asさんの言うように、HSPとCGI及びdbのデータ通信だけなら変換は必要ないみたいですが、
たとえばランキングとか、HTMLで出力してプラウザでみんなに見てもらうには、変換は必要ですから。
また、HSPクライアントとwebサーバとの通信で、文字コード変換が必要になっても、このスクリプトのおかげで、
対応出来ます。
本当にありがとうございます。



ONION software Copyright 1997-2021(c) All rights reserved.