当前位置:文档之家› vbnet编码解码例子form

vbnet编码解码例子form

?Imports System.Text
Imports System.IO
Imports System.Threading


Public Class Form1
Dim openFileDialog As OpenFileDialog
Dim saveFileDialog As SaveFileDialog
Dim filePath As String = ""
Dim byteString As String = ""
Dim textString As String = ""
Dim bytecode() As Byte
Dim inputFilePath As String = ""
Dim optionList1 As List(Of String)
Private Property tempDragPath As String

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Control.CheckForIllegalCrossThreadCalls = False 'false为能跨进程
'Dim fromEncod As Encoding = Encoding.GetEncoding("")
' MsgBox()
'MsgBox("Form1_Load")
btnOpenDialog.Visible = False
ComboBox1.BeginUpdate()
ComboBox2.BeginUpdate()
'MessageBox.Show(optionArray(0).ToString)
' MsgBox("123456")
optionList1 = ConvertUtil.getEncodingsFromSystem()
Dim i As String
For Each i In optionList1
ComboBox1.Items.Add(i)
ComboBox2.Items.Add(i)
Next
ComboBox2.EndUpdate()
ComboBox1.EndUpdate()
ComboBox1.SelectedIndex = optionList1.Count - 1
ComboBox2.SelectedIndex = optionList1.Count - 1
End Sub

Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
Try
'GC.Collect()
openFileDialog = New OpenFileDialog
openFileDialog.Filter = "txt files(*.txt)|*.txt|log(*.log)|*.log|All files (*.*)|*.*"
If openFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
filePath = openFileDialog.FileName
filePathTextBox.Text = filePath 'C:\Users\Administrator\Documents\ipmsg.log
openFileDialog.Dispose()
'textString = IO.File.ReadAllText(filePath, System.Text.Encoding.GetEncoding("GB2312")) '得到文本可以读取ANSI文本
'经测算IO.File.ReadAllText(filePath)只能区分unicode,utf8,不能区分ANSI

'MsgBox(textString)

' byteTextBox.Text = IO.File.ReadAllText(filePath) '得到文本
' byteTextBox.Text = IO.File.ReadAllBytes(filePath).ToArray.ToString
' byteTextBox.Text = System.Text.Encoding.Default.GetString(IO.File.ReadAllBytes(filePath))
textString = IO.File.ReadAllText(filePath)
bytecode = IO.File.ReadAllBytes(filePath)
'MsgBox("bytecode " + bytecode.Length.ToString + "\r\n" + textString)
byteString = BitConverter.ToString(bytecode).Replace("-", " ")
byteTextBox.Text = byteString
'System.Text.Encoding.Default

'Dim?str1?As?String?=?System.BitConverter.ToString(System.Text.Encoding.UTF8.GetBytes("要转换的文字可以是任何数字"))
'System.Text.Encoding.Convert()
'IO.File.ReadAllBytes("c:/123.txt")
' IO.File.ReadAllLines("c:/123.txt")
' IO.File.ReadAllText("c:/123.txt")
' 上面是读取()
'' IO.File.CreateText("c:/123.txt")
' IO.File.WriteAllText("c:/123.txt", "")
' IO.File.WriteAllLines("c:/123.txt", New String() {})
' IO.File.WriteAllBytes("c:/123.txt", New Byte() {})
' 这几个都可创建()
End If
Catch ex As Exception

End Try
End Sub

Private Sub filePathText_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles filePathTextBox.MouseDoubleClick
Try
openFileDialog = New OpenFileDialog
If openFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
filePath = openFileDialog.FileName
filePathTextBox.Text = filePath 'C:\Users\Administrator\Documents\ipmsg.log
openFileDialog.Dispose()
textString = IO.File.ReadAllText(filePath) '得到文本

bytecode = IO.File.ReadAllBytes(filePath)
byteString = BitConverter.ToString(bytecode).Replace("-", " ")
byteTextBox.Text = byteString
End If
Catch ex As Exception
End Try
End Sub

Private Sub filePathTextBox_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles filePathTextBox.KeyUp

If e.KeyCode = Keys.Enter Then
'MessageBox.Show("filePathTextBox.Enter")
inputFilePath = filePathTextBox.Text

' Dim s As String = "C:\Users\Administrator\Documents"
' If File.Exists(s) Then
'MessageBox.Show("文件")
' ElseIf Directory.Exists(s) Then
' MessageBox.Show("路径")
' Else
' MessageBox.Show("什么都不是")
' End If

If File.Exists(Trim(inputFilePath)) Then
'C:\Users\Administrator\Documents\ipmsg.log
filePath = inputFilePath
textString = IO.File.ReadAllText(inputFilePath) '得到文本
bytecode = IO.File.ReadAllBytes(filePath)
byteString = BitConverter.ToString(bytecode).Replace("-", " ")
byteTextBox.Text = byteString

' Dim tempStr As String
' tempStr = UTF8Encoding.Convert(U, )
'Encoding.UTF8 .GetBytes ()
'Encoding.Unicode.GetBytes("你的串")
'Encoding.ASCII.GetString()
Else
MsgBox("文件不存在,请重新输入路

径!")
filePathTextBox.Text = ""
End If
End If
End Sub

Private Sub filePathTextBox_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles filePathTextBox.DragDrop
Dim Files As String() = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
For Each File As String In Files
tempDragPath = File
' MsgBox("tempDragPath:" + tempDragPath)
filePathTextBox.Text = tempDragPath
bytecode = IO.File.ReadAllBytes(tempDragPath)
byteString = BitConverter.ToString(bytecode).Replace("-", " ")
byteTextBox.Text = byteString
Next
End Sub

Private Sub filePathTextBox_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles filePathTextBox.DragEnter

'?確定使用者抓進來的是檔案
If e.Data.GetDataPresent(DataFormats.FileDrop, False) = True Then
'?允許拖拉動作繼續?(這時滑鼠游標應該會顯示?+)
e.Effect = DragDropEffects.All
End If
' MsgBox("filePathTextBox_DragEnter")
' If e.Data.GetDataPresent(DataFormats.FileDrop) Then
' e.Effect = DragDropEffects.Link
' Else
' e.Effect = DragDropEffects.None
' End If
End Sub

Private Sub btnOpenDialog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenDialog.Click
Try
Dim myThread As New Thread(AddressOf showProgressDialog)
myThread.Start()
Thread.Sleep(2000)
myThread.Abort()
Catch ex As Exception
MsgBox(ex.Message)
End Try

End Sub



Private Sub showProgressDialog()
Dim test As testDialog = New testDialog()
test.ShowDialog()
End Sub

Private Sub btnConvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConvert.Click
Dim ComboBox1Text As String = ComboBox1.Text.Trim

Dim strArray() As String = ComboBox1Text.Split(" ") '将文本分割获取https://www.doczj.com/doc/0615934040.html,
'strArray(0)=""
Dim getEncoingText As String = strArray(0).Trim
'MsgBox("bytecode: " + bytecode.Length.ToString + ",encoding :" + encoding + "," + textString)
'判断原来的编码
Dim bytecode1(bytecode.Length) As Byte
' Array.Copy(bytecode, 0, bytecode1, 0, bytecode.Length)
If (optionList1.Contains(ComboBox1Text)) Then
If (bytecode(0) = 255 And bytecode(1) = 254) Or (bytecode(1) = 255 And bytecode(0) = 254) Then '去文件头Unicode UnicodeBigEndian ff fe,fe ff
'MsgBox("Unicode")
Dim fromEncod As Encoding = Encoding.Unicode
'Array.Copy(bytecode, 2, bytecode1, 0, bytecode.Length - 2)
Try
Dim targetEncod As Encoding

= Encoding.GetEncoding(getEncoingText)
Dim targetBytes As Byte() = Encoding.Convert(fromEncod, targetEncod, bytecode)
Dim targetEncodChars(targetEncod.GetCharCount(targetBytes, 0, targetBytes.Length) - 1) As Char
targetEncod.GetChars(targetBytes, 0, targetBytes.Length, targetEncodChars, 0)
Dim targetString As New String(targetEncodChars)
decodeTextBox.Text = targetString
Catch ex As Exception
MsgBox(ex.Message)
End Try
ElseIf bytecode(0) = Convert.ToInt32("EF", 16) And bytecode(1) = Convert.ToInt32("bb", 16) And bytecode(2) = Convert.ToInt32("bf", 16) Then 'ef bb bf UTF-8
' MsgBox("UTF8")
Dim fromEncod As Encoding = Encoding.UTF8
'Array.Copy(bytecode, 2, bytecode1, 0, bytecode.Length - 2)
Try
Dim targetEncod As Encoding = Encoding.GetEncoding(getEncoingText)
Dim targetBytes As Byte() = Encoding.Convert(fromEncod, targetEncod, bytecode)
Dim targetEncodChars(targetEncod.GetCharCount(targetBytes, 0, targetBytes.Length) - 1) As Char
targetEncod.GetChars(targetBytes, 0, targetBytes.Length, targetEncodChars, 0)
Dim targetString As New String(targetEncodChars)
decodeTextBox.Text = targetString
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
' MsgBox("ANSI")
Dim fromEncod As Encoding = Encoding.Default 'ANSI
'Array.Copy(bytecode, 2, bytecode1, 0, bytecode.Length - 2)
Try
Dim targetEncod As Encoding = Encoding.GetEncoding(getEncoingText)
Dim targetBytes As Byte() = Encoding.Convert(fromEncod, targetEncod, bytecode)
Dim targetEncodChars(targetEncod.GetCharCount(targetBytes, 0, targetBytes.Length) - 1) As Char
targetEncod.GetChars(targetBytes, 0, targetBytes.Length, targetEncodChars, 0)
Dim targetString As New String(targetEncodChars)
decodeTextBox.Text = targetString
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
Else
MsgBox("请重新输入!")
ComboBox1.Text = ""
End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'MsgBox(ComboBox1.Text.Trim + "," + ComboBox2.Text.Trim)
Dim ComboBox1Text As String = ComboBox1.Text.Trim
Dim strArray() As String = ComboBox1Text.Split(" ") '将文本分割获取https://www.doczj.com/doc/0615934040.html,
'strArray(0)=""
Dim getEncoingText1 As String = strArray(0).Trim


Dim ComboBox2Text As String = ComboBox2.Text.Trim
strArray = ComboBox1Text.Split(" ") '将文本分割获取https://www.doczj.com/doc/0615934040.html,
Dim getEncoingText2 As String = strArray(0).Trim

'MsgBox("bytecode: " + bytecode.Length.ToString + ",encoding :" + encoding + "," + textString)
'判断原来的编码
Dim bytecode1(bytecode.Length) As Byte
' Array.Copy(bytecode, 0, bytecode1, 0, bytecode.Length)
Dim targetString As String
Dim targetEncod As Encoding
If (optionList1.Contains(ComboBox1Text)) And (optionList1.Contains(ComboBox1Text)) Then
Dim fromEncod As Encoding = Encoding.GetEncoding(getEncoingText1)
Try
targetEncod = Encoding.GetEncoding(getEncoingText2)
Dim tempByteCode() As Byte = fromEncod.GetBytes(decodeTextBox.Text)
Dim targetBytes As Byte() = Encoding.Convert(fromEncod, targetEncod, tempByteCode)

Dim targetEncodChars(targetEncod.GetCharCount(targetBytes, 0, targetBytes.Length) - 1) As Char
targetEncod.GetChars(targetBytes, 0, targetBytes.Length, targetEncodChars, 0)
targetString = New String(targetEncodChars)

' MsgBox(targetString)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MsgBox("请重新输入!")
ComboBox2.Text = ""
Return
End If
If String.IsNullOrEmpty(targetString) Then
Return
End If

saveFileDialog = New SaveFileDialog
saveFileDialog.Title = "保存文字"
saveFileDialog.Filter = "Test files(*.txt)|*.txt|All Files|*.*"
saveFileDialog.AddExtension() = True
saveFileDialog.CheckPathExists() = True
saveFileDialog.FilterIndex = 0
Dim ioStream As System.IO.Stream
If saveFileDialog.ShowDialog() = DialogResult.OK Then
ioStream = saveFileDialog.OpenFile
Dim SW As New StreamWriter(ioStream, targetEncod) 'SNSISystem.Text.Encoding.Default
If Not (ioStream Is Nothing) Then
'以byte形式保存
' Dim a(10) As Byte
' a(0) = &HA4
' a(1) = &HB5

'创建FileStream对象
' Dim w As New FileStream("D:\00.aa", FileMode.Create)
'创建BinaryWriter对象
' Dim b_Write As BinaryWriter = New BinaryWriter(w)
' b_Write.Write(a(0))
' b_Write.Write(a(1))
' b_Write.Close()
' w.Close()
SW.Write(targetString)

'https://www.doczj.com/doc/0615934040.html,puter.FileSystem.WriteAllBytes("D:\00.aa", a, True) 'true为添加方式
End If
SW.Close()
ioStream.Close()
End If
End Sub
End Class



Imports System
Imports System.Text
Imports Microsoft.V

isualBasic

Public Class ConvertUtil

Public Shared Sub convertByteCode(ByVal fromEncoding As String, ByVal targetEncoding As String, ByVal src() As Byte)
Dim fromEncod As Encoding = Encoding.GetEncoding(fromEncoding.Trim)
Dim targetEncod As Encoding = Encoding.GetEncoding(targetEncoding.Trim)

Dim unicodeString As String = "This string contains the unicode character Pi(" & ChrW(&H3A0) & ")"

' Create two different encodings.
Dim ascii As Encoding = Encoding.ASCII
Dim [unicode] As Encoding = Encoding.Unicode

' Convert the string into a byte[].
Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString)

' Perform the conversion from one encoding to the other.
Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes)

' Convert the new byte[] into a char[] and then into a string.
' This is a slightly different approach to converting to illustrate
' the use of GetCharCount/GetChars.
Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length) - 1) As Char
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
Dim asciiString As New String(asciiChars)

' Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString)
Console.WriteLine("Ascii converted string: {0}", asciiString)

End Sub
Public Shared Function getEncodingsFromSystem() As List(Of String)
' For every encoding, compare the name properties with https://www.doczj.com/doc/0615934040.html,.
' Display only the encodings that have one or more different names.
Dim ei As EncodingInfo
Dim encodingList As New List(Of String)
For Each ei In Encoding.GetEncodings()
Dim e As Encoding = ei.GetEncoding()
encodingList.Add(e.BodyName + " " + e.EncodingName)
Next ei
Return encodingList
End Function
Public Shared Function byteCodeToString(ByVal targetEncoding As String, ByVal src() As Byte) As String
Dim targetEncod As Encoding = Encoding.GetEncoding(targetEncoding.Trim)
Dim byteCode() As Byte
'If byteCode (0)=
Return targetEncod.GetString(src)
End Function
End Class




相关主题
文本预览
相关文档 最新文档