解決済みの質問
ADODB.Stream でUTF-8をS-JISに変換すると、
ADODB.Stream でUTF-8をS-JISに変換すると、
半角英数字が
(変換前)abc
(変換後)a b c
となってしまい、半角スペースが間に入ってしまいます。
Replace関数でも間を詰めることができず、だめでした。
プログラムは次の通り作成しました。
対応策を教えてください。
テキストファイルを直接読む方法ではなく、
読み込んだ行ごとに変換する前提で教えてください。
作成したプログラム
'-----------------------------------------------------
Public Function UTF8toSJIS(ByRef strUtf8 As String) As String
Dim objStm As Object
Dim buff() As Byte
Set objStm = CreateObject("ADODB.Stream")
objStm.Open
objStm.Type = 1 'Byte型
buff = strUtf8 '変換対象のデータをバイト型変数に格納
objStm.Write = buff
objStm.Position = 0
objStm.Type = 2 'Text型
objStm.Charset = "UTF-8"
UTF8toSJIS = objStm.ReadText
objStm.Close : Set objStm = Nothing
End Function
'-----------------------------------------------------
すみませんが、よろしくお願いします。
- 補足
- 漢字などの2バイト文字は、化けてしまいます。
-
- 質問日時:
- 2010/10/29 17:30:26
-
- 解決日時:
- 2010/11/13 04:45:56
-
- 回答数:
- 2
-
- お礼:
- 知恵コイン
- 50枚
-
- 閲覧数:
- 1,489
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
hotosysさん
windowsではファイル内はShift-JISですが、VBA内部ではUnicodeだと思います。
またADODB.Streamは各種文字とUnicode間での変換を行うのだ思います。
質問でabcの間に0が入るのは、Unicodeの文字列データとなっているためだと思います。
Shift-JISに変換するのはADODB.Streamで更にUnicodeをShift-JISに変換するか、VBAのStrconvで変換すればいいと思います。
[ strconvで変換 ]
Sub sample()
Dim s As String
Dim d As String
Dim i As Integer
s = ChrB(&H61) & ChrB(&H62) & ChrB(&H63) 'UTF-8のabc
s = UTF8toSJIS(s)
d = "": For i = 1 To LenB(s): d = d & Hex(AscB(MidB(s, i, 1))) & " ": Next: MsgBox d '61 00 62 00 63 00
s = StrConv(s, vbFromUnicode) 'unicodeをShift-jisへ
d = "": For i = 1 To LenB(s): d = d & Hex(AscB(MidB(s, i, 1))) & " ": Next: MsgBox d '61 62 63
End Sub
- 違反報告
- 回答日時:2010/10/31 10:37:28
この質問は投票によってベストアンサーが選ばれました!
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:0人が役に立つと評価しています。
ベストアンサー以外の回答
(1件中1〜1件)
あまり、詳しくないのですが・・・
最終的に "UTF-8" に変換してしまっているように見えます。
"Shift_JIS" では?
このページとか、
http://homepage2.nifty.com/nonnon/SoftSample/VB.NET/SampleModADOS.h...
参考になるでしょうか?
- 違反報告
- 回答日時:2010/10/30 01:59:41
あなたにおすすめの解決済みの質問
- Excelのセルに入力された文字列をエンコードして別のセルに表示させるVBAや方法を教えてください。Excelのカテゴリで同様の質問をしましたが、的を射ない回答で困っています。運営ECサイト内の検索結果URLをExcel上で生成する為...
- エクセルのマクロでファイルを読み込もうとしていますが文字化けします。文字化けしない方法を教えてください。使用しているのは、Excel2007です。マクロで、テキストファイルを読み込もうしたところ、文字化けします。どうすれ...
- エクセルに書かれた内容を元にcsvを出力する、マクロを作ったのですが、scvの文字コードがSJISで出力されてしまいます。このcsvの文字コードをUTF-8で出力させる事は可能でしょうか?
あなたにおすすめの知恵ノート
- VBS 文字コード変換 (ADODB.Stream : Read/Write)