MACの「〜」を「〜」に置換

解決


rara  2009-08-14 15:55:09  No: 142403  IP: 192.*.*.*

文字で応答するBOTを作ってるんですが  macの〜  とWinの〜違うようで
VB6上では?と認識してしまいます
これを  〜に置換する方法などはないのでしょうか?

編集 削除
rara  2009-08-14 15:55:39  No: 142404  IP: 192.*.*.*

ここでも文字コードででちゃいましたね  すみません

編集 削除
魔界の仮面弁士  2009-08-14 16:23:51  No: 142405  IP: 192.*.*.*

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 非対応)事に
注意してください。

編集 削除
魔界の仮面弁士  2009-08-14 16:30:53  No: 142406  IP: 192.*.*.*

> 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

編集 削除
rara  2009-08-14 16:50:41  No: 142407  IP: 192.*.*.*

ありがとうございます  環境はxpPro  VB6です


実はSKYPEAPIからの発言の取得で
取得の時点で?になってしまってるので
無理かもしれません
置換をかけてみましたが  出来なかったので
情報が足らずにすみませんでした。

編集 削除
魔界の仮面弁士  2009-08-14 17:14:09  No: 142408  IP: 192.*.*.*

> 取得の時点で?になってしまってるので
それは、どのように確認されましたか?
(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), "〜")

編集 削除
rara  2009-08-14 20:24:29  No: 142409  IP: 192.*.*.*

ありがとうございます。できました
おっしゃるとおり文字コード  &H301Cで取得していたので

単純に
if instr(1,変数,chrw(&H301C))>=1 then
 変数=replace(変数,chrw(&H301C),"〜")
end if
で対応させました  あ、1行でかけますねw

本当にありがとうございました。

編集 削除