Len関数
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
ucmkitakan
投稿数: 91
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
全角をチェックするのに、
http://www.magicsoftware.co.jp/forum/modules/d3forum/index.php?post_id=4710
の方法でチェックを行っていました。
ところが、UnipaasV1だとうまくいっていたのが、UnipaasV1Plusにあげたところ、上手くいかなくなりました…。
なぜなのでしょうか???
ちなみにUnicodeにはしていません。
http://www.magicsoftware.co.jp/forum/modules/d3forum/index.php?post_id=4710
の方法でチェックを行っていました。
ところが、UnipaasV1だとうまくいっていたのが、UnipaasV1Plusにあげたところ、上手くいかなくなりました…。
なぜなのでしょうか???
ちなみにUnicodeにはしていません。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
ucmkitakan さん、こんにちは。
カラムの「型」が「A=文字」から「U=Unicode」に変更になっているのではないでしょうか?
Unicode では、漢字1文字でも1バイトの計算となります。
タンダコンピュータ/丹田 昌信
カラムの「型」が「A=文字」から「U=Unicode」に変更になっているのではないでしょうか?
Unicode では、漢字1文字でも1バイトの計算となります。
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
ucmkitakan
投稿数: 91
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
レスありがとうございます。
後から追記させてもらったのですが、Unicodeにはしていないのですよ…。
V1PLUSだと、
len('test')なら8
len(zen('test'))だと4
になってしまいます。
V1であれば、どちらも8と返ってきます。
後から追記させてもらったのですが、Unicodeにはしていないのですよ…。
V1PLUSだと、
len('test')なら8
len(zen('test'))だと4
になってしまいます。
V1であれば、どちらも8と返ってきます。
投票数:0
平均点:0.00
sigeno56
投稿数: 336
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
V1 Plus で 変数Aに TEST と半角を入力。
LEN(TRIM(A))で 4 が帰ってきました。これはいいとして
LEN(TRIM(ZEN(A)))で 4 で帰ってきました。ちょっとびっくり。
ZEN関数が unicode で返すという事でしょうか。
LEN(TRIM(A))で 4 が帰ってきました。これはいいとして
LEN(TRIM(ZEN(A)))で 4 で帰ってきました。ちょっとびっくり。
ZEN関数が unicode で返すという事でしょうか。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
sigeno56 さん、こんにちは。
本当ですね。V1 Plus のヘルプを見ると、戻り値が「文字」から「Unicode」に変更になっていますね。どうやら仕様が変わったみたいですね。
いろいろ試してみましたら、ZEN() 関数で一旦、全角に変換したものを LEN() 関数で長さを計ると、ちゃんと2倍になっていました。
ひとつの式に両者の関数を混合させると、途中の計算では Unicode で処理されるみたいですね。
タンダコンピュータ/丹田 昌信
本当ですね。V1 Plus のヘルプを見ると、戻り値が「文字」から「Unicode」に変更になっていますね。どうやら仕様が変わったみたいですね。
いろいろ試してみましたら、ZEN() 関数で一旦、全角に変換したものを LEN() 関数で長さを計ると、ちゃんと2倍になっていました。
ひとつの式に両者の関数を混合させると、途中の計算では Unicode で処理されるみたいですね。
タンダコンピュータ/丹田 昌信
投票数:1
平均点:10.00
ucmkitakan
投稿数: 91
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
仕様変更ですか。了解しました。
http://www.magicsoftware.co.jp/files/magic_help/uniPaaS1Plus/MGHELP.htm
Magic unipaas リファレンス/
Unicodeサポート/
式とUnicode_関数とUnicode変換
「全ての文字列の入力パラメータは、デフォルトのコードページを使用してANSIに変換され、全ての戻り値はUnicodeに変換されます。」
というのがそのことを示しているのですかね?
全角チェックは*2を削除すればOKですので、今後気をつけたいと思います。
Tandaさん、sigeno56さん、ありがとうございました!
http://www.magicsoftware.co.jp/files/magic_help/uniPaaS1Plus/MGHELP.htm
Magic unipaas リファレンス/
Unicodeサポート/
式とUnicode_関数とUnicode変換
「全ての文字列の入力パラメータは、デフォルトのコードページを使用してANSIに変換され、全ての戻り値はUnicodeに変換されます。」
というのがそのことを示しているのですかね?
全角チェックは*2を削除すればOKですので、今後気をつけたいと思います。
Tandaさん、sigeno56さん、ありがとうございました!
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
ucmkitakan さん、こんにちは。
そうですね、式については「*2」を取ってしまえば OK ですね。かえって簡単になりますね。
あと、私が見たヘルプは、式テーブルから関数一覧を開いて、ZEN() 関数にカーソルを持って行ったときに表示されるヘルプです。
戻り値がはっきりと、「Unicode」と記述されているようです。
タンダコンピュータ/丹田 昌信
そうですね、式については「*2」を取ってしまえば OK ですね。かえって簡単になりますね。
あと、私が見たヘルプは、式テーブルから関数一覧を開いて、ZEN() 関数にカーソルを持って行ったときに表示されるヘルプです。
戻り値がはっきりと、「Unicode」と記述されているようです。
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
Jiro123
投稿数: 271
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
次のようにしてみたらどうでしょう。
Len(UnicodeToANSI(Trim(Zen(A)),932))
Zen関数の結果がunicodeであると前提して、shift-jisに変換すれば良い、という訳です。
こちらでは、これで正しい結果が返ってきました。
Zen関数の結果がUnicodeというのはやっかいですね。
引数が文字型なら文字型(SJIS)で、引数がUnicode型ならばUnicode型で返されるようになれば、いいんですけどね。
Len(UnicodeToANSI(Trim(Zen(A)),932))
Zen関数の結果がunicodeであると前提して、shift-jisに変換すれば良い、という訳です。
こちらでは、これで正しい結果が返ってきました。
Zen関数の結果がUnicodeというのはやっかいですね。
引数が文字型なら文字型(SJIS)で、引数がUnicode型ならばUnicode型で返されるようになれば、いいんですけどね。
投票数:0
平均点:0.00