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

解決


rara  2009-08-15 00:55:09  No: 142403

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


rara  2009-08-15 00:55:39  No: 142404

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


魔界の仮面弁士  2009-08-15 01:23:51  No: 142405

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-15 01:30:53  No: 142406

> 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-15 01:50:41  No: 142407

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

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


魔界の仮面弁士  2009-08-15 02:14:09  No: 142408

> 取得の時点で?になってしまってるので
それは、どのように確認されましたか?
(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-15 05:24:29  No: 142409

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加