Imports System.Text
創(chuàng)新互聯(lián)提供高防服務(wù)器租用、云服務(wù)器、香港服務(wù)器、成都IDC機房托管等
Public Function StringAsUtf8Bytes(ByVal strData As String) As Byte()
Dim bytes() As Byte
bytes = Encoding.UTF8.GetBytes(strData)
Return bytes
End Function
說明:strData參數(shù)是GB2312字符串,函數(shù)返回UTF8字節(jié)數(shù)組
這個是數(shù)據(jù)庫自帶的功能啊,設(shè)置字段類型為自動編號就行了。在保存數(shù)據(jù)的時候這個字段不用賦值,也不用出現(xiàn)在Insert語句里。
Public?Class?Form1
Dim?b()?As?Byte
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
b?=?System.Text.Encoding.Default.GetBytes(TextBox1.Text)
For?i?=?0?To?UBound(b)
TextBox2.AppendText(i.ToString??"?")
Next
End?Sub
Private?Sub?Button2_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button2.Click
TextBox1.Text?=?System.Text.Encoding.Default.GetString(b)
End?Sub
Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load
TextBox1.Text?=?"Google?free?online?translation?service?instantly?translates?text?and?web?pages。?該翻譯器支持:?中文(簡體),?中文(繁體),?shqip,?日本語,?русский,?langue?fran?aise?..."
End?Sub
End?ClassVB.Net中用String類型表示字符串,內(nèi)部采用Unicode編碼。當(dāng)需要在網(wǎng)絡(luò)或串口中收發(fā)字符串時,就需要在String和Byte數(shù)組之間進行轉(zhuǎn)換,這項功能可以通過System.Text.Encoding類實現(xiàn)。
Private zeroChars()?As Char?=?{ChrW(0)}
Dim descBytes()?As Byte?=?System.Text.Encoding.Unicode.GetBytes(mDescription)
Dim?description As?String?=?System.Text.Encoding.Unicode.GetString(rBuffer,?offset,?length).TrimEnd(zeroChars)
說明:C語言中用'\0'表示字符串結(jié)束,而String類型中0是有效字符,顯示時是空白字符,會占用顯示寬度,可以用TrimEnd方法將字符串末尾的零字符去掉。
主要敘說一下StrConv 函數(shù)conversion參數(shù)最后兩個值的含義和用途,并舉例說明。
1、語法
StrConv(string, conversion, LCID)
StrConv 函數(shù)的語法有下面的命名參數(shù):
部分 說明
string 必要參數(shù)。要轉(zhuǎn)換的字符串表達式。
conversion 必要參數(shù)。Integer。其值的和決定轉(zhuǎn)換的類型。
LCID 可選的。如果與系統(tǒng)LocaleID不同,則為LocaleID(系統(tǒng)LocaleID為缺省值。)
設(shè)置值
conversion 參數(shù)的設(shè)置值為:
常數(shù) 值 說明
vbUpperCase 1 將字符串文字轉(zhuǎn)成大寫。
vbLowerCase 2 將字符串文字轉(zhuǎn)成小寫。
vbProperCase 3 將字符串中每個字的開頭字母轉(zhuǎn)成大寫。
vbWide* 4* 將字符串中單字節(jié)字符轉(zhuǎn)成雙字節(jié)字符。
vbNarrow* 8* 將字符串中雙字節(jié)字符轉(zhuǎn)成單字節(jié)字符。
vbKatakana** 16** 將字符串中平假名字符轉(zhuǎn)成片假名字符。
vbHiragana** 32** 將字符串中片假名字符轉(zhuǎn)成平假名字符。
vbUnicode 64 根據(jù)系統(tǒng)的缺省碼頁將字符串轉(zhuǎn)成 Unicode。
vbFromUnicode 128 將字符串由 Unicode 轉(zhuǎn)成系統(tǒng)的缺省碼頁。
*應(yīng)用到遠東國別。
**僅應(yīng)用到日本。
說明:前面3個參數(shù)比較簡單,后面4個我們用不上,就不說了,主要說說后面兩個。
2、ANSI 格式
語法中說的缺省碼頁就是ANSI模式,英文環(huán)境下 的ANSI 格式其實也就是ASCII碼,其它環(huán)境就不一樣了,比如中文環(huán)境,就是ASCII,一個字節(jié)表示一個字符,GB2312,2個字節(jié)表示一個漢字,所以中文環(huán)境下的ANSI格式就是ASCII碼+GB2312,早期的DOS系統(tǒng)中純文本就是這種格式,這種格式下,通過最高位來判斷是中文字符(最高位是1)還是ASCII字符(最高位是0)。中文環(huán)境下保存文本文件時一般都采用ANSI格式,不過也有其他格式,比如UTF-8。
3、Unicode編碼
Unicode(統(tǒng)一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉(zhuǎn)換、處理的要求。Unicode用兩個字節(jié)表示一個字符,涵蓋了世界上所有字符,和以前的字符集都不兼容,VB內(nèi)部字符串就是采用Unicode編碼,所以當(dāng)我們打開一個文本文件讀入數(shù)據(jù)的時候,其內(nèi)存中的內(nèi)容和文本文件的內(nèi)容是不一樣的,經(jīng)過了轉(zhuǎn)換,除非你采用二進制方式讀入。
4、vbUnicode和vbFromUnicode含義
有了上面敘說,這兩個參數(shù)的含義就好理解了,就是Unicode編碼和ANSI編碼的互換,例如:
? ? ? textline= StrConv(plaintext,vbUnicode) ?
這兒textline是以字符串變量,plaintext是以字節(jié)變量保存著ANSI模式的字符內(nèi)容,例如,“2”這個字符,一個字節(jié),值是50,16進制是32,“皖”這個漢字,兩個字節(jié),值是205和238,同樣是這兩個字符,作為字符串在內(nèi)存中都是兩個字節(jié),例如,“2”這個字符在內(nèi)存中16進制值是0032。當(dāng)VB打開一個文件讀取文本內(nèi)容是,實際上自動進行了上述轉(zhuǎn)換。
? ? ?plaintext?= StrConv(textline,?vbFromUnicode)
這兒進行相反的轉(zhuǎn)換,就是將Unicode字符串轉(zhuǎn)換成ANSI模式,轉(zhuǎn)換結(jié)果必須以字節(jié)方式保存。
5、vbUnicode和vbFromUnicode用途
由于字符在內(nèi)存中的內(nèi)容和文件中的內(nèi)容不一致,所以必須要用到這種轉(zhuǎn)換,特別是系統(tǒng)間進行數(shù)據(jù)交換、數(shù)據(jù)加密和解密,如果不做轉(zhuǎn)換可能導(dǎo)致得不到正確的結(jié)果。
比如,我們對一個文本文件進行加密,這個文件是ANSI格式存儲的,當(dāng)從文件內(nèi)容讀入一行到內(nèi)存的時候,自動將內(nèi)容轉(zhuǎn)換成了Unicode格式,如果這時候?qū)ζ渥黾用苓\算,其結(jié)果和文件中字符串加密結(jié)果是不一樣的,這樣的結(jié)果如果讓別人解密將無法得到正確的結(jié)果。如果對讀入內(nèi)存的內(nèi)容先做個轉(zhuǎn)換(textline是讀入內(nèi)容):
? ? ?plaintext?= StrConv(textline,?vbFromUnicode)
再對plaintext做加密,其結(jié)果就一樣了。
舉例(按行做加密和解密運算,算法是AES+Base64):
[vb]?view plain?copy
Status?=?"Encrypting?File"
Open?FileName?For?Input?As?#1??????'?打開輸入文件。
Open?FileName2?For?Output?As?#2?????'?打開輸出文件。
Do?While?Not?EOF(1)
Line?Input?#1,?TextLine
plaintext?=?StrConv(TextLine,?vbFromUnicode)
Status?=?"Encrypting?Data"
m_Rijndael.SetCipherKey?pass,?KeyBits
m_Rijndael.ArrayEncrypt?plaintext,?ciphertext,?0
Status?=?"Converting?Text?to?Base64"
TextLine?=?Base64Encode(ciphertext)
Status?=?""
Print?#2,?TextLine????'?將字符串寫入文件。
Loop
Close
[vb]?view plain?copy
Status?=?"Decrypting?File"
Open?FileName?For?Input?As?#1??????'?打開輸入文件。
Open?FileName2?For?Output?As?#2????'?打開輸出文件。
Do?While?Not?EOF(1)
Line?Input?#1,?TextLine
Status?=?"Converting?Base64?to?Text"
ciphertext?=?Base64Decode(TextLine)
Status?=?"Decrypting?Data"
m_Rijndael.SetCipherKey?pass,?KeyBits
If?m_Rijndael.ArrayDecrypt(plaintext,?ciphertext,?0)??0?Then
Status?=?""
Exit?Sub
End?If
TextLine?=?StrConv(plaintext,?vbUnicode)
For?i?=?0?To?UBound(plaintext)
Debug.Print?plaintext(i)
Next?i
k?=?InStr(1,?TextLine,?Chr(0),?vbBinaryCompare)
If?k??0?Then?TextLine?=?Left(TextLine,?k?-?1)????'截掉加密時補的0
MsgBox?TextLine??"end"
Status?=?""
Print?#2,?TextLine????'?將字符串寫入文件。
Loop
Close
GB2312是GBK編碼的子集,使用GBK編碼函數(shù)即可
'GBK編碼(結(jié)果以百分號%進行分隔)
Public Function GBKEncode(ByVal sInput As String) As String
Dim ret_GBKEncode As String = ""
Dim i As Integer
Dim startIndex As Integer = 0
Dim endIndex As Integer
Dim x() As Byte = System.Text.Encoding.Default.GetBytes(sInput) '字符以及字符串在vb2008中都是以unicode編碼存儲的
endIndex = x.Length - 1
For i = startIndex To endIndex
ret_GBKEncode = "%" Hex(x(i))
Next
Return ret_GBKEncode
End Function
'GBK解碼
Public Function GBKDecode(ByVal sInput As String) As String
sInput = sInput.Replace("%", "")
Dim ret_GBKDecode As String = ""
Dim sLen As Integer = sInput.Length
Dim n As Integer = sLen \ 2
Dim sBytes(0 To n - 1) As Byte
'轉(zhuǎn)化為字節(jié)碼
For i As Integer = 1 To n
sBytes(i - 1) = CByte("H" sInput.Substring(2 * i - 2, 2))
Next
'將字節(jié)碼轉(zhuǎn)化為字符串
ret_GBKDecode = System.Text.Encoding.Default.GetString(sBytes)
Return ret_GBKDecode
End Function
打開格式轉(zhuǎn)換
進入軟件,然后打開視頻格式轉(zhuǎn)換功能。
2/3
導(dǎo)入視頻
進入轉(zhuǎn)換功能后,選擇一段視頻,然后點擊下一步。
完美動力怎么剪輯視頻-CG行業(yè)全能人才孵化基地
值得一看的視頻相關(guān)信息推薦
完美動力廣告
3/3
設(shè)置編碼格式
視頻導(dǎo)入成功后,首先設(shè)置目標(biāo)編碼格式,然后點擊開始轉(zhuǎn)換即可。