QNo.111369とも関係するのですが、VBでUTF-8でテキストファイルを出力することはできますか? StrConvを使うのでしょうか?

A 回答 (2件)

MSDNを読む限りではできそうですね



' string は変換する文字列
StrConv(string, vbUnicode)

で変換された文字列が帰ってくるはずですので、それを出力してやればよいと思います。

この回答への補足

ありがとうございます。
このUNICODEにはUTF8,UTF16など他にも種類があると思いますが、UTF8と考えていいのでしょうか。

補足日時:2001/08/02 17:35
    • good
    • 0

参考URLによるとWideCharToMultiByte関数が使えそう



参考URL:http://www.microsoft.com/JAPAN/support/kb/articl …
    • good
    • 0
この回答へのお礼

使えそうですね。ありがとうございました。

お礼日時:2001/08/02 18:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPerlのcgi-lib.plでデコードされた文字をUTF-8にエンコ

Perlのcgi-lib.plでデコードされた文字をUTF-8にエンコードするにはどんなコードを書けば良いのでしょうか。
"あ"という文字をHTMLフォームから受取って%82%A0というS-JISのバイトコードに再エンコードするコードを質問したら

$a = "あ";
$a =~ s/([^a-zA-Z0-9*\-.@_])/sprintf("%%%02X", ord($1))/eg;
$a =~ s/%20/+/g;
print $a;

という答えを頂きました。コードの意味はよく判らなかったのですが、ちゃんと思惑通り$aは%82%A0になりますので長い間重宝にさせていただいています。
今度は$a="あ";の値をUTF-8の%E3%81%82にエンコードしたいのですが、どのように上記のコードを変更すればよいか教えてください。正規表現というのを使えば出来るのでしょうが、本で読んでもやっぱりわかりません。

Aベストアンサー

> データの送信元のHTMLがUTF-8ならば、一旦cgi-lib.plで
> デコードされた文字も私が使っているコードのままでUTF-8に
> 再エンコードされるということでしょうか?

そのとおりです。
ただ、例外としてformにaccept-charsetを指定するなど
送信する際の文字コードを別途指定した場合はそれに従います。



EncodeもCGIもこれまでのライブラリーと同じように使えるようにする書き方と
オブジェクト指向っぽくする書き方の両方ができるのでいろいろと試してみると
面白いと思います。検索するとドキュメントもかなり豊富ですよ。

QUTF-8のテキストファイルを開く方法

UTF-8のテキストファイルを開く方法

こんにちは。VBA初心者です。

FSOを使ってテキストファイルを開いてみたのですが、S-JISで開かれるらしく、文字化けしてしまいました。

そこで、WEBで調べてみると「ADODB.Stream」というものを使用すると、「オブジェクト.Charset = "UTF-8"」のように文字コードを指定できることがわかりました。

しかし、テキストストリームというものがいまいち理解できていないので使い方がよくわかりません。

以下のようなコードを書いてみましたが、「実行時エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となってしまいました。

どこが間違っているのか教えていただけないでしょうか。

ちなみに「Open」ステートメント(Open バス名 For モード As #ファイル番号)を使用してテキストを内部的に開いた場合はどうなるのでしょうか。もし、標準でS-JISだった場合は、UTF-8にする方法はあるのでしょうか。

どうかよろしくお願いします。

Sub UTF8を開く()

Dim myADODB As Object
Set myADODB = CreateObject("ADODB.Stream")
Dim i As Integer

Worksheets("sheet1").Activate
i = 1

With myADODB

.Charset = "UTF-8"
.ReadLine ("D:\test\sample.txt")

Do Until .AtEndOfStream = True

Cells(i, 1).Value = myADODB
i = i + 1

Loop
.Close
End With

End Sub

UTF-8のテキストファイルを開く方法

こんにちは。VBA初心者です。

FSOを使ってテキストファイルを開いてみたのですが、S-JISで開かれるらしく、文字化けしてしまいました。

そこで、WEBで調べてみると「ADODB.Stream」というものを使用すると、「オブジェクト.Charset = "UTF-8"」のように文字コードを指定できることがわかりました。

しかし、テキストストリームというものがいまいち理解できていないので使い方がよくわかりません。

以下のようなコードを書いてみましたが、「実行時エラー'438' オブジェク...続きを読む

Aベストアンサー

とりあえず一例です
Sub test()
Dim mystream As Object
Dim i As Long
Const adTypetext As Long = 2
Const adReadLine As Long = -2

Set mystream = CreateObject("ADODB.Stream")
mystream.Type = adTypetext
mystream.Charset = "UTF-8"
mystream.Open
mystream.LoadFromFile ("C:\hoge.txt")
i = 1
Do Until mystream.EOS
Cells(i, 1).Value = mystream.ReadText(adReadLine)
i = i + 1
Loop
mystream.Close
Set mystream = Nothing
End Sub

Q保存形式としてのUnicode、UTF-8

「Unicode、UTF-8 違い」などでネットを検索すると
Unicode・・・文字コード
UTF-8・・・符号化方式
とのことで、同次元のものではないとのこと。

しかし、
さくらエディタ、TeraPadなどのテキストエディタの保存形式に
Unicode、UTF-8などがあるのですが、この違いは何でしょうか?



前提として、iPhone/iPadにてテキストファイルを扱おうとすると
Gmailの添付ファイル、Dropboxなどで文字化けする(デコードできない)ので
どちらかの形式に統一しようと思ったのですが、
あとあと困るといやなので、正確に理解したいと思った次第です。

どうぞよろしくお願いします。

Aベストアンサー

おそらく、Unicode=UTF-16だと思います。
そのエディタの保存形式の表記としてUnicode、UTF-8としているだけでしょう。
Windowsのメモ帳の文字コードがUnicodeとUTF-8となっていますからそれに合わせたのではないでしょうか。

QADODB.Streamを使用してUTF-8を出力

こんちには。VBA初心者です。

Excelのワークシートの値をUTF-8形式のテキスト(.csvで保存します)形式でエクスポートするため、以下のようなコードを書いてみたのですが、「.Type = adTypeText」のところで、「実行時エラー 3001:引数が間違った型、許容範囲外、または競合しています。」のエラーになってしまいます。

ADO関係はほとんど知識がなく、「http://msdn.microsoft.com/ja-jp/library/cc408239.aspx」こういうところで調べても、よく理解できないことが多いので困っています。

どなたか助言をいただけないでしょうか。
(後学のために多少の解説もいただけると助かります)

Sub exportToCsv()

Dim myBook As String
Dim mySheet As String
Dim myLastRow As Long
Dim i As Integer

myBook = "sample.xlsm"
mySheet = "sample"

Workbooks(myBook).Worksheets(mySheet).Activate

myLastRow = Cells.SpecialCells(xlLastCell).Row

Set myStream = CreateObject("ADODB.Stream")

With myStream
.Type = adTypeText
.Charset = "UTF-8"
.Open
.WriteText
End With

For i = 1 To myLastRow
myStream.WriteText Cells(i, 1) & vbLf
Next i

myStream.SaveToFile "D:\sample.csv"
myStream.Close
Set myStream = Nothing

End Sub

こんちには。VBA初心者です。

Excelのワークシートの値をUTF-8形式のテキスト(.csvで保存します)形式でエクスポートするため、以下のようなコードを書いてみたのですが、「.Type = adTypeText」のところで、「実行時エラー 3001:引数が間違った型、許容範囲外、または競合しています。」のエラーになってしまいます。

ADO関係はほとんど知識がなく、「http://msdn.microsoft.com/ja-jp/library/cc408239.aspx」こういうところで調べても、よく理解できないことが多いので困っています。

どなたか助言をいた...続きを読む

Aベストアンサー

丁寧にやりましょう。

Dim myBook As String
Dim mySheet As String
Dim myLastRow As Long
Dim i As Integer
Dim シート As Worksheet
Dim 文字列 As String
Dim MyStream

myBook = "sample.xlsm"
mySheet = "sample"

'★デフォルトオブジェクトは使用しない方がよい
'Workbooks(myBook).Worksheets(mySheet).Activate
Set シート = Workbooks(myBook).Worksheets(mySheet)

myLastRow = シート.Cells.SpecialCells(xlLastCell).Row
Set MyStream = CreateObject("ADODB.Stream")

With MyStream
    .Type = 2
    .Charset = "UTF-8"
    .Open
    '.WriteText ★パラメータが無いのでエラーになる
End With
For i = 1 To myLastRow
    '★改行だけでなく、復帰+改行にする。Unix用なら改行のみ
    字列 = シート.Cells(i, 1)
    文字列 = Replace(文字列, vbLf, vbNewLine)
    MyStream.WriteText 文字列 & vbNewLine
Next i
MyStream.SaveToFile "D:\sample.csv", 2 '★上書きOK 規定はNG
MyStream.Close
Set MyStream = Nothing

丁寧にやりましょう。

Dim myBook As String
Dim mySheet As String
Dim myLastRow As Long
Dim i As Integer
Dim シート As Worksheet
Dim 文字列 As String
Dim MyStream

myBook = "sample.xlsm"
mySheet = "sample"

'★デフォルトオブジェクトは使用しない方がよい
'Workbooks(myBook).Worksheets(mySheet).Activate
Set シート = Workbooks(myBook).Worksheets(mySheet)

myLastRow = シート.Cells.SpecialCells(xlLastCell).Row
Set MyStream = CreateObject("ADODB.Stream")

With MyStream
    .Type...続きを読む

QMFCのコントロールにUTF-8の文字を表示したい

MFCのコントロールにUTF-8の文字を表示したい

表題の件ですが、VisualStudio2008において、UTF-8+BOMフォーマットで保存したソースコードにBOMつきUTF-8を入力する方法と、UTF-8文字列をMFCのコントロール(リストコントロールなど)に表示する方法がわかりません。
どなたかご教授いただける方が居られましたら幸いです。

Aベストアンサー

とりあえず、受信している文字列はちゃんとBOMつきUTF-8の文字列になっていますか?

ちなみにこんなコードではうまく変換出来ているようです。

#include <windows.h>
#include <string>

std::wstring ConvUTF8toUni(std::string utf8str) // BOMをとるため非const
{
std::wstring unistr;

// BOM とり
if (utf8str.length() > 3)
{
if ((unsigned char)utf8str[0] == 0xEF &&
(unsigned char)utf8str[1] == 0xBB &&
(unsigned char)utf8str[2] == 0xBF) {
utf8str.erase(0, 3);
}
}

int len = ::MultiByteToWideChar(CP_UTF8, 0, utf8str.c_str(), -1, NULL, 0);
if (len > 0)
{
unistr.resize(len);
::MultiByteToWideChar(CP_UTF8, 0, utf8str.c_str(), -1, &unistr[0], len);
}
return unistr;
}

int main()
{
unsigned char utf8[] =
{
0xEF, 0xBB, 0xBF,// BOM
0xE3, 0x81, 0x82,// あ
0xE3, 0x81, 0x84,// い
0xE3, 0x81, 0x86,// う
0xE3, 0x81, 0x88,// え
0xE3, 0x81, 0x8A,// お
};

std::string utf8str((char*)utf8, _countof(utf8));
std::wstring unistr = ConvUTF8toUni(utf8str);

return 0;
}

とりあえず、受信している文字列はちゃんとBOMつきUTF-8の文字列になっていますか?

ちなみにこんなコードではうまく変換出来ているようです。

#include <windows.h>
#include <string>

std::wstring ConvUTF8toUni(std::string utf8str) // BOMをとるため非const
{
std::wstring unistr;

// BOM とり
if (utf8str.length() > 3)
{
if ((unsigned char)utf8str[0] == 0xEF &&
(unsigned char)utf8str[1] == 0xBB &&
(unsigned char)utf8str[2] == 0xBF) {
utf8str.erase(0, 3);
}
}

int len = ::MultiByteT...続きを読む

QVBAでUTF-8テキストファイル作成したい

VBA,文字コードなどにあかるくない初心者です。

VBAを利用して、エクセルのとあるセルに記載されている文字を
UTF-8形式でテキストファイルに出力させたいと考えています。

(多言語対応のため・・・、韓国語や中国語でセルに記載された文字を
 UTF-8形式でテキストファイルに文字化けしないよう出力させたいためです。)

どのように実現が可能か、いくつか検索をしてみましたが
難しくてわかりませんでした。

VBAのサンプルコードを教えていただけないでしょうか。
もしくは、初心者でもわかりやすい実現方法が記載されたサイトを教えていただけないでしょうか。

よろしくお願い致します。


※今文字コードを意識せずに下記のようなVBAを書いています。(簡略化して記載しています。)
Sub test()
Open "C:\Sample\Data.txt" For Output As #1 'ファイルを新規作成

'データ書き込み
Print #1, Cells(1, 1)
Close #1

End Sub

VBA,文字コードなどにあかるくない初心者です。

VBAを利用して、エクセルのとあるセルに記載されている文字を
UTF-8形式でテキストファイルに出力させたいと考えています。

(多言語対応のため・・・、韓国語や中国語でセルに記載された文字を
 UTF-8形式でテキストファイルに文字化けしないよう出力させたいためです。)

どのように実現が可能か、いくつか検索をしてみましたが
難しくてわかりませんでした。

VBAのサンプルコードを教えていただけないでしょうか。
もしくは、初心者でもわかりやすい実現方...続きを読む

Aベストアンサー

Openステートメントでは Shift-JISになってしまうと思います

『Microsoft Active Data Objects X.X Libraly』に参照設定をおこなって
ADODB.Streamを使う方向になると思います

dim strm as New ADODB.Stream
strm.Open
strm.Charset = "UTF-8"
' strm.Charset = "Unicode"
strm.WeiteText Cells(1,1)
' すべての書き出しが終わったら
strm.SaveToFile "ファイル名"
strm.Close
Set Strm = nothing

といった具合です

QUTF-8でエンコーディングとはどういうことですか

UTF-8でエンコーディングをしたものでないと動作しないので、

UTF-8でエンコーディングしたいのですが、どうしたらいいですか?

また、UTF-8でエンコーディングとはどういうことですか?

Aベストアンサー

#1の方のおっしゃられるとおり、これだけの内容では判断しにくいのですが、何かに必要なファイルがUTF-8でなければならないと仮定して話を進めます(もし違っていたら、補足して下さい)。

まずエンコーディングについて、ここでは、以下にあるような意味です。
http://www.atmarkit.co.jp/aig/01xml/encode.html
もう少し分かりやすく要約すると、文字をコンピュータで扱えるようにコード(数値)を割り振ることです。
この割り当て方にはいくつかの種類があり、WindowsではShift_JISが、UNIX系ではEUCが一般的に使われます。UTF-8もその1つです。

例えばWindowsで普通にファイルを作ると、エンコーディングはShift_JISになっているので、それを変換する必要があります。
Windows 2000またはXPならば、メモ帳でファイルを開いてから、「名前を付けて保存」でUTF-8を選ぶことで変換できます(Windows NTはどうだったか忘れてしまいました)。
それ以外の場合、他のテキストエディタで変換する必要があります。例えばWindowsならば、参考URLにあるTeraPadで開いてから、「漢字/改行コード指定保存」でできます。

さらに、そのファイルがXMLファイルであって、先頭に以下のような記述がある場合、
<?xml version="1.0" encoding="Shift_JIS"?>
以下のように正しい記述に直す必要があります。
<?xml version="1.0" encoding="UTF-8"?>

(参考) 本当は、UTF-8の場合は、encoding="UTF-8"を省略しても構いません

参考URL:http://www2s.biglobe.ne.jp/~t-susumu/toclip/

#1の方のおっしゃられるとおり、これだけの内容では判断しにくいのですが、何かに必要なファイルがUTF-8でなければならないと仮定して話を進めます(もし違っていたら、補足して下さい)。

まずエンコーディングについて、ここでは、以下にあるような意味です。
http://www.atmarkit.co.jp/aig/01xml/encode.html
もう少し分かりやすく要約すると、文字をコンピュータで扱えるようにコード(数値)を割り振ることです。
この割り当て方にはいくつかの種類があり、WindowsではShift_JISが、UNIX系ではEUCが一般的...続きを読む

QVB6でUTF-8ファイルの読取りを

VB6で、日本語と簡体文字の混在するUTF-8コードのファイル "c:\testfile.txt" を読み取って変数に入れて、取り扱える実例を作っていただけませんでしょうか?

VB6では、FileSystemObjectなどを使うようですが、さっぱり使い方が分りません。私は昔、コボルやフォートランをかじったことがあり、VBの基礎は使えるのですが、FileSystemObjectなどはどうも分りません。Visual Basic.NETを使えばUTF-8も簡単に使えるようですが、難しくて歯が立たずVB6でやろうとしています。

ご参考;「次のコードは、FileSystemObject を使って、ファイルの読み取りまたは書き込みに使用できる TextStream オブジェクトを取得する例です。」とあるのですが、ファイルから変数に読み取るために使うには如何使えば良いのか、分りません。

Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("This is a test.")
MyFile.Close

また、下記は「指定したファイルを開き、開いたファイルの読み取り、または追加書き込みに使用できる TextStream オブジェクトを返します。」とあるのですが、これとの関係もよくわかりません。

object.OpenTextFile(filename[, iomode[, create[, format]]])

よろしくお願いいたします。

VB6で、日本語と簡体文字の混在するUTF-8コードのファイル "c:\testfile.txt" を読み取って変数に入れて、取り扱える実例を作っていただけませんでしょうか?

VB6では、FileSystemObjectなどを使うようですが、さっぱり使い方が分りません。私は昔、コボルやフォートランをかじったことがあり、VBの基礎は使えるのですが、FileSystemObjectなどはどうも分りません。Visual Basic.NETを使えばUTF-8も簡単に使えるようですが、難しくて歯が立たずVB6でやろうとしています。

ご参考;「次のコードは、Fil...続きを読む

Aベストアンサー

現在開示されている状況からは「Visual Basic6でなければならない」理由がまったくわかりません。

秀丸エディタを使っているのなら、秀丸のマクロで済んでしまう内容ではないでしょうか?
秀丸のマクロは、ちょっとしたプログラム言語並の機能がありますから。

他にも、UTF-8に対応していて、文字列の加工も得意な言語がいっぱいあります。
Perl , Ruby, PHP, Python等。
COBOLやFortranを知っているなら、変にオブジェクト指向っぽくなってBasicと呼ぶのに抵抗のあるVBより、昔のBasicに近い感じで記述できるPerlの方が理解しやすいのではないか、とも思います。

Qphp,htmlのエディターでutf-8固定したい

php,htmlなどの開発をする際に、utf-8で開発しています。
これまでsakura,php editor,Notepad++ などを利用してみました。

新規に作成する際のエンコードをUTF-8に固定は出来ますが、
すでにUTF-8で作成されたファイルを開く際に、
たびたび 判定を間違えてshift-jisなどで開き、日本語コメントなどが文字化けします。
(ファイルをダブルクリックで開く際エンコードは自動判定の為)

utf-8だけ使えればいいのですが、上記のエディターで常にUTF-8固定のような
設定はできないでしょうか?

あるいは上記以外のフリーエディターでutf-8固定できるものはありませんでしょうか?

宜しくお願いします。

Aベストアンサー

サクラエディタでしたらコマンドラインオプションがあります。以下、ヘルプの「コマンドラインオプション」より抜粋。
  -CODE=文字コード種別
  (0=SJIS, 1=JIS, 2=EUC, 3=Unicode, 4=UTF-8, 5=UTF-7, 6=UnicodeBE, 99=自動判別)

.phpファイルのダブルクリックでサクラエディタをUTF-8指定で開くには、エクスプローラの[ツール]→[フォルダ オプション]の「ファイルの種類」タブからで.phpを選択し、[編集]
アクションのopenを選び、[編集]
アクションを実行するアプリケーションのsakura.exeに「-CODE=4」を追記してください。
【例】"C:\Program Files\サクラエディタ\sakura.exe" -CODE=4 "%1"

QVB2005でUTF-8からshift_JISに変換する方法

VB2005の初心者です。

UTF-8のXMLデータで、一部日本語の項目が化けているのでshift_JISに変換したいのですが、やり方が分りません。

下記のとおり、XMLデータから項目を抽出して、ログに出力すると化けてしまいます。

Dim CreatorInfodNode As Xml.XmlNodeList
CreatorInfodNode = xmlDoc.SelectNodes("/Mml/MmlBody/MmlModuleItem/docInfo[@contentModuleType=contains(@contentModuleType,'patientInfo')]" + _
"/mmlCi:CreatorInfo/mmlPsi:PersonalizedInfo/mmlPsi:personName/mmlNm:Name/mmlNm:fullname", nsmgr1)

LbLogFlg = WriteLogFile("fullname:" + CreatorInfodNode(0).InnerText.Trim)

↓ログの出力結果
fullname:?????????????????????

皆様の知恵をお借りできれば幸いです。
よろしくお願い致します。

VB2005の初心者です。

UTF-8のXMLデータで、一部日本語の項目が化けているのでshift_JISに変換したいのですが、やり方が分りません。

下記のとおり、XMLデータから項目を抽出して、ログに出力すると化けてしまいます。

Dim CreatorInfodNode As Xml.XmlNodeList
CreatorInfodNode = xmlDoc.SelectNodes("/Mml/MmlBody/MmlModuleItem/docInfo[@contentModuleType=contains(@contentModuleType,'patientInfo')]" + _
"/mmlCi:CreatorInfo/mmlPsi:PersonalizedInfo/mmlPsi:personName/mmlNm:Name/mmlNm:fu...続きを読む

Aベストアンサー

重要なのは、WriteLogFileの中身です。

どういう方法でログを出力しているのか補足してみてください。


人気Q&Aランキング

おすすめ情報