VB6から接続先のPHPファイルに命令を送りMysqlからデータを取得しバイナリ変換したデータをVB側でバイナリで受け取り溜め込む処理をしています。
VB6 xmlhttp 利用
↓
PHP Mysql関数利用
↓
Mysql アクセス
↓
PHP application/octet-stream
↓
VB6 バイナリ解析しクラスに溜め込む
溜め込んだデータを表示する際にADODB.Streamを利用し変換処理をかけているのですがどうもうまく行きません。
取得した文字「か」が &H37 <mRow(0) = 63> と表示されています。
Mysql→PHP側の問題でしょうか?
よろしくお願いします。
'*****************
'clsRow.cls
'*****************
Option Explicit
Private mRow() As Byte
'表示
Public Property Get get_RowNam() As String
Dim adoStream As New ADODB.Stream
Dim newByte As String
newByte = mRow
If newByte = "" Then
Exit Property
End If
Set adoStream = New ADODB.Stream
With adoStream
' .Charset = "EUC-JP"
.Charset = "UTF-8"
.Type = adTypeBinary
Call .Open
Call .Write(mRow)
.Position = 0
.Type = adTypeText
.Charset = "Shift_JIS"
get_RowNam = .ReadText()
Call .Close
End With
Set adoStream = Nothing
End Property
Public Sub DataSet(ByRef allBinary() As Byte)
mRow = allBinary
End Sub
開発環境
WindowSXP
VS6.0Sp6
ローカルテストサーバー
Appach Ver 2.0
php Ver 5.2.1
mysql Ver 5.0.24 MySQL の文字セット: UTF-8 Unicode (utf8)
補足
(Mysqlからデータを受け取らないで)
PHPから直接「か」を同じ形式でVB側に渡すと
&H82A9
<mRow(0) = 130>
<mRow(1) = 169>
のデータが取得できました。
Mysql
↓
PHP
にデータを渡しているところでおかしなってそうです。
&H37 はもとのデータに戻せるでしょうか。
よろしくお願いします。
my.iniの設定はどうなってますか?
skip-character-set-client-handshake
とかで調べてみてください。
ヤマ様返信ありがとうございます。
my.iniいろいろいじってみましたが駄目でした。
[client]
default-character-set=ujis
[mysql]
default-character-set=ujis
[mysqld]
default-character-set=ujis
skip-character-set-client-handshake
ネットでいろいろ調べてみるとMySQL4.1以降は文字化けの問題が多いみたいですね。
VB側でどんなものでもうまく変換できるように出来きる
仕組みを作成できたら最高なのですが。
もう少し独自で調べてみます。
VBとはなれますが、
httpd.confとかphp.iniの
文字コード設定とか確認してみたらどうでしょう。
'http://q.hatena.ne.jp/1159280538
ヤマさんありがとうございます。
どうもphpMyAdmin側の設定の問題だったようです。
VB板なのにお騒がせしました。
解決に至った経緯を書き記しておきます。
データ検証の際、phpMyAdmin側でデータ作成し「select」のクエリー結果をVB側でADODB.Streamを利用し
UTF-8
↓
Shift_JIS
変換していました。
なかなか解決の糸口が見つからなかった為「Insert」、「Update」のロジック
を先に書くことにしました。
VB6側で作成した文字列のクエリーを下記文字コードで変換。
Shift_JIS
↓
UTF-8
UpdateしたデータをphpMyAdminで確認。
文字化け確認。
VBアプリ側でデータ確認。
phpMyAdmin側で作成したものは文字化け
VBアプリで作成したものは正常に表示。
よってphpMyAdminの設定ミスと判断。
解決いたしました。
ツイート | ![]() |