国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

字符串中文的問題

2019-11-18 17:50:53
字體:
來源:轉載
供稿:網友
->字串中文的問題,起於vb的字串是使用UniCode,而我們一般是使用AsciiCode。
這差別在何處呢?UniCode的每個字元長度是2個byte,而Ascii是一個byte,如果說,我將們將VB的字串寫入檔案,有時會有意想不到的結果。例如:
Text1.Text="這是一個abc"len5=Len(str5)
如果我們的access資料庫有一欄位的長度是10個Byte,所以我們在TextBox中設定MaxLength=10,但是上面的例子得到的len5是7,而不是我們認為的11,因為不管是中文或英文,vb一律以UniCode來存,所以str5的長度是7個"字元",而text1最大的長度限制是10,7沒有超過10,故使用者仍可輸入,但存檔時,11個byte超過10個byte,所以會有錯。
可是或許有人發現,使用RS232來傳資料時,另一端主機是Ascii編碼的機器,在vb中我們若使用String來傳,一樣可以通啊,其實那是vb在傳送與接收data時,會做轉換,使我們的程式設計較方便,但如果傳的資料是Binary時,就頭大啦。例如說,以字串的方式來傳送資料,當想傳Ascii大於128時,常有些問題,因為ASC(Chr(129))=0,使我們不能用Chr()的指令來放資料。(事實上,您可以使用ChrW(129)來存資料,和使用AscW()來取得值,加個W代表是Word的運算),這時候,就只有使用ByteArray來做了。1.UniCode轉成ByteAryDimbyteAry()AsByteDimstr5AsStringDimiAsLongstr5="這abc"
byteAry=str5Fori=LBound(byteAry)ToUBound(byteAry)
Debug.2.ByteAry轉回UniCode使用Strconv()轉換DimbyteAry(10)asByteDimStr5asString
byteAry(0)=25byteAry(1)=144byteAry(2)=97byteAry(3)=98
byteAry(4)=99Str5=StrConv(byteAry,vbUniCode)3.一些有用的函式SubStr()中文化取子字串,相對Mid()
Strlen()中文化字串長度,相對Len()
StrLeft()中文化取左字串,相對Left()
StrRight()中文化取右字串,相對Right()
isChinese()Check某個字是否中文字

PublicFunctionSubStr(ByValtstrAsString,startAsInteger,OptionallengAsVariant)AsString
DimtmpstrAsString
IfIsMissing(leng)Then
tmpstr=StrConv(MidB(StrConv(tstr,vbFromUnicode),start),vbUnicode)
Else
tmpstr=StrConv(MidB(StrConv(tstr,vbFromUnicode),start,leng),vbUnicode)
EndIf
SubStr=tmpstr
EndFunction

PublicFunctionStrlen(ByValtstrAsString)AsInteger
Strlen=LenB(StrConv(tstr,vbFromUnicode))
EndFunction

PublicFunctionStrLeft(ByValstr5AsString,ByVallen5AsLong)AsString
DimtmpstrAsString
tmpstr=StrConv(str5,vbFromUnicode)
tmpstr=LeftB(tmpstr,len5)
StrLeft=StrConv(tmpstr,vbUnicode)
EndFunction

PublicFunctionStrRight(ByValstr5AsString,ByVallen5AsLong)AsString
DimtmpstrAsString
tmpstr=StrConv(str5,vbFromUnicode)
tmpstr=RightB(tmpstr,len5)
StrLeft=StrConv(tmpstr,vbUnicode)
EndFunction

PublicFunctionisChinese(ByValasciivAsInteger)AsBoolean
IfLen(Hex$(asciiv))>2Then
isChinese=True
Else
isChinese=False
EndIf
EndFunction->
->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄山市| 澜沧| 衡山县| 樟树市| 柞水县| 商南县| 镇巴县| 安溪县| 山丹县| 万全县| 临邑县| 开封县| 冷水江市| 高雄市| 威宁| 邛崃市| 阳山县| 乌拉特后旗| 德清县| 宜章县| 大埔县| 长春市| 毕节市| 和硕县| 景宁| 宽城| 湘西| 松原市| 北碚区| 奇台县| 扬州市| 蓬莱市| 德兴市| 海安县| 土默特右旗| 石泉县| 将乐县| 奉贤区| 元谋县| 云安县| 玛纳斯县|