PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
24023 | 15/09/19 17:23:21 | RE:PB12.5: SJIS→JIS変換ができません By めめ |
24021 | 15/09/15 16:22:15 | RE:PB12.5: SJIS→JIS変換ができません By asano01 |
24019 | 15/09/11 16:09:41 | PB12.5: SJIS→JIS変換ができません By love14kn |
カテゴリ:スクリプトの記述
日付:2015年09月15日 16:22 発信者:asano01
題名:RE:PB12.5: SJIS→JIS変換ができません
こんにちは。
PowerBuilder12.5が扱う文字コードは、UTF16です。
このため、String型などの文字を扱う変数に格納される文字列は、UTF16(Unicode)として扱われます。
画面からの入力はすべて、UTF16となります。
データベースに格納される文字コードにも注意が必要です。
詳しい情報は、マイグレーションのマニュアルにありますのでご一読ください。
このようになった理由は、WIndowsで扱う文字コードが、SJISからUTF16に変更になっているためです。
これは、グローバル対応のためでもあります。
どうしてもSJISとJISで作業をしたいのであれば、バイナリレベルでの処理になります。
文字列としての処理ではできません。
どうしても必要なのであれば、バイナリでの操作を行なう処理を、新しく開発なさってください。
その場合には、PowerBuilderだけでなく、ほかの言語も視野に入れてください。
(CやVBやRubyなど)
わたしたちの場合は、「父メール」でのメール送信の対応時に、同じ悩みをかかえました。
対応としては、「父メール」をやめて、BASP21 とCDO(Collaboration Data Objects) に
変更しました。
※発言No.24013 - 24015
繰り返しますが、マイグレーションのマニュアルを、もういちど、精読されることをお勧めします。
時間が許すなら、リリースノートもよく読んでください。
旧バージョンに対して、なにが、どう変わったのか、は利用されるユーザー様に直結しますので。
もうひとつ。
UTF16、UTF8、SJIS、JISについての仕様を、簡単にでいいので理解してください。
理解すれば、文字列での並び変えが「あいうえお」順にならない理由も理解できます。
以上、お力になれたのなら幸いです。
まこと
>元々PB6で開発していたソフトをPB12にマイグレーションしたところ
>SJISからJISへの変換関数(1byteごとのASCIIコード判断方式)が
>動かなくなってしまいました。
>
>調査の結果MidAが2byte文字に対して長さ1byteで切り取ったときに
>0byteとして帰ってくるのが原因というところまでは分かったのですが
>2byte文字の2byte目のASCIIコードをうまく取得する方法はないでしょうか?
>
>またはASCIIコード判断以外でSJIS→JIS変換する方法はないでしょうか?
>
>
>---------------------------------------------------
>PB6.0
>---------------------------------------------------
>string chr
>integer sj1, sj2, sj0
>
>chr = "あ"
>sj1 = Asc( Mid( chr, 1, 1 ) )
>sj2 = Asc( Mid( chr, 2, 1 ) )
>sj0 = Asc( Mid( chr, 2, 2 ) ) //参考用
>
>結果
>sj1 → 130 len( sj1 ) → 1
>sj2 → 160 len( sj2 ) → 1
>sj0 → 130 len( sj0 ) → 2 //参考用
>---------------------------------------------------
>
>
>---------------------------------------------------
>PB12.5
>---------------------------------------------------
>string chr
>integer sj1, sj2, sj0
>
>chr = "あ"
>sj1 = AscA( MidA( chr, 1, 1 ) )
>sj2 = AscA( MidA( chr, 2, 1 ) )
>sj0 = AscA( MidA( chr, 1, 2 ) ) //参考用
>
>結果
>sj1 → 0 len( sj1 ) → 0
>sj2 → 0 len( sj2 ) → 0
>sj0 → 130 len( sj0 ) → 2 //参考用
>---------------------------------------------------
>
付加情報:
PowerBuilder Version 12.5
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.