• 締切済み

VBでテキストをUTF-8で表示するには?

VB超初心者です。 例えばTextBox1に「あいうえお」とあった際に、ボタンを押すとUTF-8に変換し、 TextBox2に「%e3%81%82%e3%81%84%e3%81%86%e3%81%88%e3%81%8a」と テキストで表示したいのですが上手くいきません。 いろいろとHPを参考にしながら、”System.Text.Encoding.UTF8.GetBytes"で 取得した値を"toStrings"で文字列すればいいのかな・・・などとやってみても 上手くいかず・・・ ご説明いただいても理解が追いつくか不安もありますが、ご教授願えれば幸いです。

  • yama_x
  • お礼率35% (308/875)

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ExcelなどのVBAです。 http://stabucky.com/wp/archives/4237を参考にしました。 VBE画面で、ツールー参照設定 Microsoft ActiveX Data Objects 2.8 Library にチェックを入れて「OK」 ーーー 標準モジュールに Sub test01() Dim x As String x = Range("A1") MsgBox x y = encodeUTF8(x) MsgBox y End Sub 'ーー₋UTF8に変換のための単機能の関数定義。上記WEB記事から。 Function encodeUTF8(mytext As String) As String Dim mystream As New ADODB.Stream Dim mybinary, mynumber With mystream .Open .Type = adTypeText .Charset = "UTF-8" .WriteText mytext .Position = 0 .Type = adTypeBinary .Position = 3 mybinary = .Read .Close End With For Each mynumber In mybinary encodeUTF8 = encodeUTF8 & "%" & Hex(mynumber) Next End Function ーー エクセルシートでデータ例を作る。 上記WEB記事との関連で A1セルに「あア亜」を入れる。 A3に %E3%81%82%E3%82%A2%E4%BA%9C を貼り付け。 ーー test01を実行。 表示されたMsgboxの綴りと、A3セルの文字列の内容が一致することを確認。 小生はあまり慣れた分野ではないので、初めの一歩のご案内。 ーーー Googleで 「vba utf-8に変換」 で照会すればたくさん記事がある。 ここに質問する前に、検索して、上記回答ぐらいやってみて、 その中での疑問に絞って質問すること。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは JavaScriptで encodeURIComponent を、使ってみてはどうですか?

関連するQ&A

  • SJIS->UTF8->SJISコード変換について

    Windows XPでVB.NET2010で文字コード変換のプログラムを下記のように作成しました。 Dim beforeStr As String = "変換前" Dim utfEnc = System.Text.Encoding.GetEncoding(65001) Dim sjisEnc = System.Text.Encoding.GetEncoding(932) Dim beforeBytes() As Byte = utfEnc.GetBytes(beforeStr) Dim afterBytes() As Byte = System.Text.Encoding.Convert(sjisEnc, utfEnc, beforeBytes) Dim afterStr As String = sjisEnc.GetString(afterBytes) TextBox3.Text = afterStr Dim reverseStr As String = afterStr Dim reverseBytes() As Byte = sjisEnc.GetBytes(reverseStr) Dim baseBytes() As Byte = System.Text.Encoding.Convert(utfEnc, sjisEnc, reverseBytes) TextBox4.Text = utfEnc.GetString(baseBytes) SJIS->UTF8に変換して、確認のためにUTF8->SJISに逆変換してみましたが、 「変換」までは正しいのですが、最後の「前」が文字化けしてしまします。 正しくSJIS-.UTF8->SJISするには、どのように修正すればよろしいでしょうか? よろしくお願いします。

  • VB2010 テキスト書き出し位置

    VisualBasic初心者です。 VB2010でフォームでフォームから複数のTextBoxに入力したものを Buttonクリックイベントでテキストファイルに書き込みを行おうと思っています。 その際、テキストファイルへの書き込み位置を指定したいと思っています。 TextBox1の内容はテキストファイルの1文字目から10文字目 TextBox2の内容は11文字目から20文字目という感じにしたいです。 現在下記のプログラムです。 どなたかご教授ください。 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim write_data As New System.IO.StreamWriter("C:\test.txt", False, _ System.Text.Encoding.Default) write_data.Write(Textbox1.text) write_data.Close() End Sub

  • VBのテキスト書き込み読み出し

    VB初心者です。 VBのテキスト書き込み読み出しについて質問させていただきます。 ~使用オブジェクト~ textbox1 textbox2 button1 button2 現在下記の通りtextbox1とtextbox2に書いた文字(length 10まで)をbutton1 clickで C:\test.txtに書き出し、 button2 clickでtextbox1 と textbox2に戻すプログラムを書いてみました。 読み込みのところが現在は2個ですが、実用的には膨大な数にしたいと思っています。 単純に沢山書けばいいのでしょうが現実的ではないのでスッキリと書く書き方はないでしょうか? さらに、例としてtextbox1にAさんの名前textbox2にAさんの年齢をいれたとします。 その際、Bさん以降を登録したいのですがその場合テキストへの書き込みを次行に書き込み 次行を読み込むにはどのように書けばよろしいでしょうか? ご教授お願い致します。 Public Class Form1 '##################################################### '"C:\test.txt"へ書き込み '##################################################### Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim write_data As New System.IO.StreamWriter("C:\test.txt", False, _ System.Text.Encoding.Default) Dim str As String Dim str1 As String str = String.Format("{0, -10}", TextBox1.Text) str1 = String.Format("{0, -10}", TextBox2.Text) write_data.Write(str & str1) write_data.Close() End Sub '##################################################### '"C:\test.txt"の読み込み '##################################################### Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim Reader As New IO.StreamReader("C:\test.txt", System.Text.Encoding.GetEncoding("Shift-JIS")) While Reader.Peek() > -1 '10文字取得 Dim c(9) As Char Dim d(9) As Char Reader.ReadBlock(c, 0, c.Length) Reader.ReadBlock(d, 0, d.Length) TextBox1.Text = c TextBox2.Text = d End While Reader.Close() End Sub End Class

  • UTF-8とUTF-16について質問です。

    まず、【あ】という文字をUTF-16というエンコーディング方式で バイト配列化すると [0] => 66 [1] => 48 というバイト値が帰ってきます。 これはとりあえずC#で処理を行いました。 Encoding encode = Encoding.GetEncoding("UTF-16"); String value = "あ"; Byte [] byteData = encode.GetBytes(value); それでは【あ】という文字の文字集合のコードポイントは右記となります。【0x3042】 これは、出力された 66、48という数値を16進数に変換すると 66=>42 48=>30 となり、リトルエンディアン環境で 0x4230という16進数であらわされるようです。 この点も不思議なのですが今回知りたいのはUTF-16でエンコーディングされた バイト配列はこのように文字集合のコードポイントに復帰?させることができますよね? ではUTF-8でエンコーディングされた【あ】という文字の バイト配列 [0] => 227 [1] => 129 [2] => 130 というバイト配列を上記のような文字集合のコードポイントの値へ復帰させることは できるのでしょうか? それに伴いUTF-8でつかわれる文字集合もUTF-16と同じコードポイントなのでしょうか? 上記 1.UTF-8でエンコーディングされた文字列をバイト配列にした場合 元の文字集合に戻せるのか?戻せるならばその戻し方は? 2.UTF-8がさす文字集合とUTF-16がさす文字集合はおなじものですよね? 上記二点よろしくご教授ください。

  • ASP.NET SJIS→UTF-8文字コード変換。

    ASP.NETをVBで開発しています。 無償の ASP.NET ホスティング 「WebMatrixHosting Japan」で実行しています。 表題の件ですが、シフトJISのHTMLページから UTF-8のASPXページへPOSTした時に、文字化けすることで困っています。 シフトJISの値をUTF-8に変換できる方法をご存知の方、教えてください。お願いします。 ASCII文字は問題なく実行できます。 以下検証中のコードです ファイル名:SJIS.htm <form action="UTF-8.aspx"> <input type="text" name="username"> <input type="submit"> </form> ファイル名:UTF-8.aspx Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load IF request.form("username") <> "" THEN DIM strIn AS String = request.form("username") Dim bytesData As Byte() = System.Text.Encoding.GetEncoding("shift_jis").GetBytes(strIn) Dim outPut As String = System.Text.Encoding.GetEncoding("UTF-8").GetString(bytesData) Literal1.Text = outPut END IF End Sub

  • VB.NETのテキストボックスで、カーソル位置に文字を入れたいのですが、どうすればいいのでしょうか

    VB.NET作っています。 System.Web.UIWebControls.TextBoxで、 ボタンを押すとテキストボックスのカーソル位置に文字列を入れたいのですが、どうやってやればいいのでしょうか? おしえてくださいーー

  • VBでこんなことできますか??

    例えば、テキストボックスが縦に100個並んでいるとします。あるボタンを押すと、textbox1~textbox100までの値(.text)を、順番にmsgboxで出していくとしたら・・・。 Sub bottun1_click msgbox textbox1.text msgbox textbox2.text msgbox textbox3.text ・ ・ msgbox textbox100.text End Sub じゃ無いと無理でしょうか? 何とかループ文でできないでしょうか? 知りたいことは、 オブジェクト名「textbox1」を何とか"textbox" & "1" のように表現できないものでしょうか?? これが表現できれば、変数の値を1~100回ループすれば たったの1文でできるような気がします。 どなたかご教授下さい。

  • FormViewRowプロパティで値取得

    VWD2005 + ASP.NETでWebページ作成中で行きづまっています。 Webフォーム上に配置したFormView 内を編集し、 EditItemTemprate 内TextBoxの値 (数値の場合と文字の場合がり)取得をVBのコードで取得したいのですが御教授ください。 よろしくお願いいたします。 以下のように行うと 「FormView1.Row.FindControl("TextBox") 」の部分が 型'System.Web.UIControl'の値を'Integer'に変換できません。とエラーになります。 例: Me.TextBox1.Text = CType(FormView1.Row.FindControl("TextBox"), Integer)

  • htmlソースをテキストボックスに表示させて20行目の10文字の数字を取得したい。

    恐れ入ります。 http://www.microsoft.com/japan/msdn/vbasic/migration/tips/WebClient/ このページのコードを使わせてもらって htmlソースをテキストボックスに表示することはできました。表示させたテキストボックスの20行目の10文字の数字を取得したいのですが、どのようにすれば取得できるんでしょうか?val関数も1行目だけみたいですし・・・。ちなみに20行目は var strReqHomeID = "0000100012"; という具合になっていて  0000100012 を取得したいのです。 -------------------以下コード---------------- Imports System Imports System.Text Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim download As New Net.WebClient() Dim temp As Byte() = download.DownloadData(TextBox1.Text) Dim change As Text.Encoding = Encoding.Default TextBox2.Text = change.GetString(temp) Dim filename As String = System.IO.Path.GetFileName(TextBox1.Text) If filename = "" Then filename = "Temp.html" End If Dim strPath = My.Computer.FileSystem.SpecialDirectories.Desktop strPath = strPath + "\" + filename download.DownloadFile(TextBox1.Text, strPath) WebBrowser1.Navigate(TextBox1.Text) Catch ex As Exception Throw End Try End Sub

  • URLをテキストボックスに表示したい vb2008

    Private Sub 移動CB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 移動CB.Click WebBrowser1.Url = New Uri(アドレスTextBox.Text) アドレスTextBox.Text = WebBrowser1.Url End Sub アドレスTextBoxにURLを手動で入力して、移動CBを押すと指定したサイトがWebBrowser1に表示されます。 そこでそのサイト内のURLをクリックしたときに新しいURLをアドレスTextBoxに表示させたいのですがうまくできません。 アドレスTextBox.Text = WebBrowser1.Urlがurlだとビルド失敗になってしまいます。 なので アドレスTextBox.Text = WebBrowser1.Text にしてみたのですがうまくできません。 どうすればいいのでしょうか?よろしくお願いします。