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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0718
ユーヤン大文字と小文字の変換2解決


ユーヤン

リンク

2021/7/18(Sun) 17:39:47|NO.93255

ネットからサンプルを見つけ、試してみましたが、文字化けしてしまいます。
どうすればいいのでしょうか?

#include "user32.as" #include "hsp3utf.as" font "meiryo",16 mes "大元の文字列\t: AbCdeFGhIjk\n" ; 大文字変換 (変換された文字列がそのまま同じ変数に返るので注意 data1 ="AbCdeFGhIjk" CharUpperW varptr(data1) data1=cnvwtos(data1) mes "CharUpper関数\t: "+data1 ; 小文字変換 data2 ="AbCdeFGhIjk" CharLowerW varptr(data2) data2=cnvwtos(data2) mes "CharLower関数\t: "+data2 ; 小文字変換 [HSP標準対応の関数] data3 ="AbCdeFGhIjk" data3=cnvwtos(data3) mes "HSP getpath関数\t: "+getpath(data3, 16)



この記事に返信する


沢渡

リンク

2021/7/18(Sun) 19:16:22|NO.93258

hsp3utfの標準の文字コードはUTF-8ですが、
Unicodeに対応したWinAPIはUTF-16が対象なので、
呼び出す前にUTF-8をUTF-16に変換し、
呼び出した後はUTF-16をUTF-8に変換する必要があります。

#include "user32.as" #include "hsp3utf.as" font "meiryo",16 mes "大元の文字列\t: AbCdeFGhIjk\n" ; 大文字変換 (変換された文字列がそのまま同じ変数に返るので注意 data1 ="AbCdeFGhIjk" sdim buf,strlen(data1)*2+2 : cnvstow buf,data1 //UTF-16用のバッファを確保した上で、UTF-8→UTF-16変換 CharUpperW varptr(buf) data1=cnvwtos(buf) //UTF-16→UTF-8変換 mes "CharUpper関数\t: "+data1 ; 小文字変換 data2 ="AbCdeFGhIjk" sdim buf,strlen(data2)*2+2 : cnvstow buf,data2 CharLowerW varptr(buf) data2=cnvwtos(buf) mes "CharLower関数\t: "+data2 ; 小文字変換 [HSP標準対応の関数] data3 ="AbCdeFGhIjk" // data3=cnvwtos(data3) //HSP標準関数を使う場合はUTF-8・UTF-16の変換は必要なし mes "HSP getpath関数\t: "+getpath(data3, 16)



ユーヤン

リンク

2021/7/20(Tue) 19:10:45|NO.93261

getpathでうっかりcnvwtosを呼び出すのうっかりやってしまいました…。
cnvstowを呼び出す必要があるんですね…。
沢渡さん、ありがとうございます…。



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