2008年10月06日

Shift-JIS でファイルを書き出す

前回も書いたけれど、Visual Basic 2008にはVB6.0と違って内部コードがUTF-8になっている
そのことは、UTF-8で提供されることが多い、Web ServiceとかAPIとか言われるものを使う時には便利なんですが、困るのは、携帯用とかMobileでもでShift-jis でホームページを作るためにVisual Basic 2008でファイルを出力したい場合が困る。
それで、テンプレートはUTF-8でもよいけれど、読み込んで加工して
たとえば
HTML = "<title>{Title}</title>"
というhtmlがあって、タイトルにVB2008と入れたいとかだと
HTML=Replace("HTML","{Title}","VB2008")
などとVB内部で加工していきます
それをSift-JIS で書き出したいときに
 Dim TextFile As IO.StreamWriter

        TextFile = New IO.StreamWriter(DirectoryPath & WriteFileName, False, System.Text.Encoding.GetEncoding("Shift-JIS"))
        TextFile.Write(HTML)
        TextFile.Close()

とか書くと、Shift-JISで書き出されます
TextFile = New IO.StreamWriter(DirectoryPath & WriteFileName, False, System.Text.Encoding.GetEncoding("Shift-JIS"))
部分を
TextFile = New IO.StreamWriter(DirectoryPath & WriteFileName)

だと
Visual Basic 2008 はUTF-8で書き出してくれます

ちょっとそれますが、FomaとかでXHTMLと認識してもらうのにはまったので、VBで書き出したヘッダだけのせておきます

Mobile Adsenseを使って見たかったので、拡張子をphpにしたのでと
サーバーがヘッダで、xmlを送ってくれないので苦労しました。

<?php
header('Content-Type: application/xhtml+xml; charset=Shift_JIS');
echo '<?xml version="1.0" encoding="Shift_JIS"?>'."\n"
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<title>VB2008</title>
</head>

posted by kiyo at 20:41| VB2008の文字コード | このブログの読者になる | 更新情報をチェックする

2008年09月21日

Visual Basic2008(VB2008)の文字コード

Visual Basic 2008(vb2008)の文字コードはUTF-8になっています。

VB6.0の時はShift-jis だったんですが。
たぶんvb.netからかなあ

UTF-8になったおかげで、amazonや楽天などのデータなどを取得しても変換せずに使えるところがとても便利です。
エンコードかければいいということはあるのですが、ないほうが面倒ないですね。


しかし、ここで、VB2008で書いたプログラムにテキストファイルを読み込ませるような場合、以前VB6で使っていたShift-jis のファイルなどもUTF-8にエンコードして開いてくれるということです。


Shift-jis や EUCなどで使いたい場合は

TextFile = New IO.StreamReader(FilePath,System.Text.Encoding.Default)
とオプションをつける必要があるようです。


またIEなどからデータを取得する場合もInternet Explorer でHPを開くときにも自動で内部の文字コードのUTF-8にあわせてくれているようでその点文字コードをあまり意識しないでIEを操作したりできます。


Internet Explorerが文字コードを合わせているのか?どうなのかは知りませんが文字コードを気にしなくていいというのは便利です



例として

以下のソースはseesaaのブログサービスで、記事の設定をしたときにそれが正常に終了すると
HTMLの中に「記事の標準設定が完了しました」という文字が出現します
もしそれがなければ、エラーだとメッセージボックスが警告します。

設定の部分ははしょってますが

        objDocument = objIE.Document
        Dim HTML As String
        HTML = objDocument.documentelement.innertext

        If InStr(HTML, "記事の標準設定が完了しました") = 0 Then
            MsgBox("記事の設定で何らかのエラーがありました、確認してください")
            Flag = False
            Return Flag
            Exit Function
        End If

seesaaのブログサービスはshift-jisで書かれていますが
utf-8のVB2008では、seesaaのサービスのHTMLを勝手にUTF-8で読み込んだりしてくれるのでとても便利に使えるといえましょう

posted by kiyo at 20:17| VB2008の文字コード | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。