文字で応答するBOTを作ってるんですが macの〜 とWinの〜違うようで
VB6上では?と認識してしまいます
これを 〜に置換する方法などはないのでしょうか?
ここでも文字コードででちゃいましたね すみません
編集 削除12136 というと…この文字という事になりますね。
http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=2F68
上記の文字ではないのだとしたら、投稿時に文字化けしないよう、
Unicode のコードポイントを示してもらった方が良いかと。
なお、文字の置換については、
Dim srcText As String '置換前の Unicode 文字列
srcText = ………
Dim char As String '「〜」に置換したい文字
char = ChrW(12136)
Dim dstText As String
dstText = Replace(srcText, Chr, "〜")
のようにすれば OK です。
なお、VB6 の Form / TextBox / Label / MsgBox / Debug.Print 等は、
Shift_JIS 以外のデータを正しく表現できない(Unicode 非対応)事に
注意してください。
> 12136 というと…この文字という事になりますね。
違った。12316 だからこちらですね。
http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=301C
'VB6 の MsgBox では表現できない
MsgBox ChrW(12316) & vbCrLf & ChrW(&HFF5E)
'VBScript の MsgBox では表現可能
With CreateObject("ScriptControl")
.Language = "VBScript"
.ExecuteStatement "MsgBox ChrW(12316) & vbCrLf & ChrW(&HFF5E)"
End With
ありがとうございます 環境はxpPro VB6です
実はSKYPEAPIからの発言の取得で
取得の時点で?になってしまってるので
無理かもしれません
置換をかけてみましたが 出来なかったので
情報が足らずにすみませんでした。
> 取得の時点で?になってしまってるので
それは、どのように確認されましたか?
(Debug.Print や ウォッチウィンドウでは、正確には確認できません)
また、取得されるデータは、バイナリ(Byte配列)でしょうか。
それとも文字列(String)でしょうか。
> 無理かもしれません
取得時点で化けているかどうか、それぞれの文字を確認してみてください。
&H3F や &HFF1F などになってしまっているなら、最早どうにもなりませんし、
&H301C のまま取得できているのであれば、対処可能かと思います。
Dim srcText As String
srcText = "は" & ChrW(&H301C) & "ひふ" & ChrW(&HFF5E) & "へほー?"
Dim c As String
Dim L As Long
For L = 1 To Len(srcText)
c = Mid(srcText, L, 1)
Debug.Print L, Hex(AscW(c)), c '内容確認用
Next
'『は?ひふ〜へほー?』と表示される(置換前)
Debug.Print srcText
'『は〜ひふ〜へほー?』と表示される(置換成功)
Debug.Print Replace(srcText, ChrW(&H301C), "〜")
ありがとうございます。できました
おっしゃるとおり文字コード &H301Cで取得していたので
単純に
if instr(1,変数,chrw(&H301C))>=1 then
変数=replace(変数,chrw(&H301C),"〜")
end if
で対応させました あ、1行でかけますねw
本当にありがとうございました。