vb.net默認字符編碼 vb字形常規(guī)代碼

gb2312>unicode>utf8, 以及逆轉(zhuǎn)的方法'>VB.net 字符轉(zhuǎn)換問題 字符(漢字、數(shù)字、字母、符號)>gb2312>unicode>utf8, 以及逆轉(zhuǎn)的方法

字符編碼轉(zhuǎn)換嗎?

在澄城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設計制作定制網(wǎng)站建設,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站制作,成都全網(wǎng)營銷,外貿(mào)營銷網(wǎng)站建設,澄城網(wǎng)站建設費用合理。

1.字符與gb2312(gbk的子集):

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

2.Unicode字符串為UTF-8

Imports System.Text

Public Function StringAsUtf8Bytes(ByVal strData As String) As Byte()

Dim bytes() As Byte

bytes = Encoding.UTF8.GetBytes(strData)

Return bytes

End Function

'這里可以類推出好幾種。

vb.net怎么把漢字轉(zhuǎn)換為GB2312編碼,例如“廣東”變成%B9%E3%B6%AB

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

vb.net中textbox中顯示本地文本的中文時候總是出現(xiàn)亂碼,也就是說顯示不了中文

那您現(xiàn)在也不要擔心,支原體是一個相對比較重的感染,而且可能夫妻同時感染,老公不掛是否有癥狀,都建議去醫(yī)院查下,預防以后夫妻交叉感染,而且支原體治療后,是需要復查3個月,3個月都是陰性,才算完全的治療,復查正常后在去醫(yī)院做個孕前優(yōu)生檢測,在醫(yī)生指導下受孕,祝您健康

病情分析:

你好,這種情況需要及時的治療的

指導意見:

支原體感染治好后,患者可在3到6個月以后再考慮懷孕,因為各種各樣藥物的殘留影響有可能導致胎兒出現(xiàn)畸形.這些藥物雖然大部分都排出體外了,但是有一部分可以繼續(xù)存在人體的體內(nèi),影響精子以及卵子的形成或者是導致精子卵子的畸形.因此,患者使用這些藥物以后,一般應該在3到6個月以后才考慮懷孕.

病情分析:

保險一點的話最好是半年之內(nèi),因為我們知道治療此病的藥物副作用是比較大的.

指導意見:

用大環(huán)內(nèi)脂類藥物效果好,口服紅霉素和阿奇霉素效果就很好,在治療期間以及治療的恢復期間是不允許同房,因為有支原體感染的情況下易導致胎兒發(fā)育畸形,感染等等情況.

生活護理:

注意休息,祝您早日健康!

不知道你的支原體檢查是抽血查的還是查的分泌物?如果查的是分泌物,首先正常女性陰道里就寄生有支原體,這對生育來說影響不大,因為好多生殖中心已經(jīng)不把支原體檢查作為孕前常規(guī)檢查;其次支原體服完藥之后2周再檢查比較好,時間太短會出現(xiàn)假陽性.

病情分析:

支原體是正常存在人體內(nèi)微生物,當在人的抵抗力下降時,其可異常增殖,產(chǎn)生致病作用.

指導意見:

但由于支原體無細胞壁的特殊結(jié)構(gòu),其處于病毒與細菌之間,用藥受限,臨床上治療主要選用的藥物有四環(huán)素類,大環(huán)內(nèi)酯類,喹諾酮類,其治療的時間比較長,一般是半個月到一個月左右,但一定不要中斷治療,因為治療不徹底很可能引起內(nèi)部感染如盆腔炎,宮頸炎等,建議你支原體檢測為陰性后再懷孕.

VB.NET UNICODE碼 顯示

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編碼。當需要在網(wǎng)絡或串口中收發(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為缺省值。)

設置值

conversion 參數(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)的缺省碼頁。

*應用到遠東國別。

**僅應用到日本。

說明:前面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)生的,它為每種語言中的每個字符設定了統(tǒng)一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉(zhuǎn)換、處理的要求。Unicode用兩個字節(jié)表示一個字符,涵蓋了世界上所有字符,和以前的字符集都不兼容,VB內(nèi)部字符串就是采用Unicode編碼,所以當我們打開一個文本文件讀入數(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。當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)換可能導致得不到正確的結(jié)果。

比如,我們對一個文本文件進行加密,這個文件是ANSI格式存儲的,當從文件內(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

為什么在VB.NET中用My.Computer.FileSystem.ReadAllText(文件名)得到的字符串是亂碼?

My.Computer.FileSystem.ReadAllText(strfilename,System.Text.Encoding.Default)

需要加參數(shù),指定文件名編碼System.Text.Encoding.Default這里指的是系統(tǒng)默認編碼

一個VB.net的菜鳥問題

【1】

New Char()意思是定義一個新的Char型數(shù)組并將此數(shù)組作為參數(shù)傳遞

基本等同于VB6的Dim tmp() As XXXX

但是此語法要比VB6中的更加靈活

【2】

VB.net中新增了一個Char類型,用來存儲Unicode字符,而用引號""括起來的字符默認為ASCII字符,所以要在引號后加上一個小寫的c來強制VB將字符轉(zhuǎn)換為Unicode編碼。例如:

Dim UniCode As Char,ASCIICode As String

UniCode = "W"c

ASCIICode = "W"

【3】花括號為初始一個新數(shù)組時的語法,括號中可以用逗號分隔開數(shù)組的初始值。對比:

VB6:

Dim k() As String

k = Array("a","b","c")

VB.net:

Dim k As String(){"a","b","c"}

而數(shù)組作為參數(shù)傳遞時,在過程的一開始就定義一個傳遞用的數(shù)組是很麻煩的,

所以用New Char(){ "a"c , "b"c , "c"c }會很方便

【4】

Split方法有很多重載版本,你所說的這一種能夠使用

網(wǎng)頁標題:vb.net默認字符編碼 vb字形常規(guī)代碼
轉(zhuǎn)載注明:http://muchs.cn/article4/hheoie.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、App開發(fā)、營銷型網(wǎng)站建設、電子商務、App設計、移動網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營