符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
b错了因为vb变量名不能有空格答案应该是d
成都创新互联专业为企业提供河津网站建设、河津做网站、河津网站设计、河津网站制作等企业网站建设、网页设计与制作、河津企业网站模板建站服务,10余年河津做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
必须以字母开头不能有特殊的名称d选项没问题
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类型表示字符串,内部采用Unicode编码。当需要在网络或串口中收发字符串时,就需要在String和Byte数组之间进行转换,这项功能可以通过System.Text.Encoding类实现。
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'表示字符串结束,而String类型中0是有效字符,显示时是空白字符,会占用显示宽度,可以用TrimEnd方法将字符串末尾的零字符去掉。
主要叙说一下StrConv 函数conversion参数最后两个值的含义和用途,并举例说明。
1、语法
StrConv(string, conversion, LCID)
StrConv 函数的语法有下面的命名参数:
部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)
设置值
conversion 参数的设置值为:
常数 值 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。
vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。
*应用到远东国别。
**仅应用到日本。
说明:前面3个参数比较简单,后面4个我们用不上,就不说了,主要说说后面两个。
2、ANSI 格式
语法中说的缺省码页就是ANSI模式,英文环境下 的ANSI 格式其实也就是ASCII码,其它环境就不一样了,比如中文环境,就是ASCII,一个字节表示一个字符,GB2312,2个字节表示一个汉字,所以中文环境下的ANSI格式就是ASCII码+GB2312,早期的DOS系统中纯文本就是这种格式,这种格式下,通过最高位来判断是中文字符(最高位是1)还是ASCII字符(最高位是0)。中文环境下保存文本文件时一般都采用ANSI格式,不过也有其他格式,比如UTF-8。
3、Unicode编码
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode用两个字节表示一个字符,涵盖了世界上所有字符,和以前的字符集都不兼容,VB内部字符串就是采用Unicode编码,所以当我们打开一个文本文件读入数据的时候,其内存中的内容和文本文件的内容是不一样的,经过了转换,除非你采用二进制方式读入。
4、vbUnicode和vbFromUnicode含义
有了上面叙说,这两个参数的含义就好理解了,就是Unicode编码和ANSI编码的互换,例如:
textline= StrConv(plaintext,vbUnicode)
这儿textline是以字符串变量,plaintext是以字节变量保存着ANSI模式的字符内容,例如,“2”这个字符,一个字节,值是50,16进制是32,“皖”这个汉字,两个字节,值是205和238,同样是这两个字符,作为字符串在内存中都是两个字节,例如,“2”这个字符在内存中16进制值是0032。当VB打开一个文件读取文本内容是,实际上自动进行了上述转换。
plaintext = StrConv(textline, vbFromUnicode)
这儿进行相反的转换,就是将Unicode字符串转换成ANSI模式,转换结果必须以字节方式保存。
5、vbUnicode和vbFromUnicode用途
由于字符在内存中的内容和文件中的内容不一致,所以必须要用到这种转换,特别是系统间进行数据交换、数据加密和解密,如果不做转换可能导致得不到正确的结果。
比如,我们对一个文本文件进行加密,这个文件是ANSI格式存储的,当从文件内容读入一行到内存的时候,自动将内容转换成了Unicode格式,如果这时候对其做加密运算,其结果和文件中字符串加密结果是不一样的,这样的结果如果让别人解密将无法得到正确的结果。如果对读入内存的内容先做个转换(textline是读入内容):
plaintext = StrConv(textline, vbFromUnicode)
再对plaintext做加密,其结果就一样了。
举例(按行做加密和解密运算,算法是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
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim s As String = "0Ff0ajkh04624F"
Dim i As Integer = 0
Dim sTemp As String = ""
Dim ss As String = ""
For i = 1 To Strings.Len(s)
sTemp = Mid(s, i, 1)
If Asc(sTemp) = 65 And Asc(sTemp) = 90 Then
sTemp = LCase(sTemp)
ElseIf Asc(sTemp) = 95 And Asc(sTemp) = 122 Then
sTemp = UCase(sTemp)
Else
sTemp = sTemp
End If
ss = ss sTemp
Next
MsgBox(ss)
End Sub
public string hz2py(string hz) //获得汉字的区位码
{
byte[] sarr = System.Text.Encoding.Default.GetBytes(hz);
int len = sarr.Length;
if (len1)
{
byte[] array = new byte[2];
array = System.Text.Encoding.Default.GetBytes(hz);
int i1 = (short)(array[0] - '\0');
int i2 = (short)(array[1] - '\0');
//unicode解码方式下的汉字码
// array = System.Text.Encoding.Unicode.GetBytes(hz);
// int i1 = (short)(array[0] - '\0');
// int i2 = (short)(array[1] - '\0');
// int t1 = Convert.ToInt32(i1,16);
// int t2 = Convert.ToInt32(i2,16);
int tmp=i1*256+i2;
string getpychar="*";//找不到拼音码的用*补位
if(tmp=45217tmp=45252){getpychar= "A";}
else if(tmp=45253tmp=45760){getpychar= "B";}
else if(tmp=47761tmp=46317){getpychar= "C";}
else if(tmp=46318tmp=46825){getpychar= "D";}
else if(tmp=46826tmp=47009){getpychar= "E";}
else if(tmp=47010tmp=47296){getpychar= "F";}
else if(tmp=47297tmp=47613){getpychar= "G";}
else if(tmp=47614tmp=48118){getpychar= "H";}
else if(tmp=48119tmp=49061){getpychar= "J";}
else if(tmp=49062tmp=49323){getpychar= "K";}
else if(tmp=49324tmp=49895){getpychar= "L";}
else if(tmp=49896tmp=50370){getpychar= "M";}
else if(tmp=50371tmp=50613){getpychar= "N";}
else if(tmp=50614tmp=50621){getpychar= "O";}
else if(tmp=50622tmp=50905){getpychar= "P";}
else if(tmp=50906tmp=51386){getpychar= "Q";}
else if(tmp=51387tmp=51445){getpychar= "R";}
else if(tmp=51446tmp=52217){getpychar= "S";}
else if(tmp=52218tmp=52697){getpychar= "T";}
else if(tmp=52698tmp=52979){getpychar= "W";}
else if(tmp=52980tmp=53640){getpychar= "X";}
else if(tmp=53689tmp=54480){getpychar= "Y";}
else if(tmp=54481tmp=55289){getpychar= "Z";}
return getpychar;
}
else
{
return hz;
}
}
public string transpy(string strhz) //把汉字字符串转换成拼音码
{
string strtemp="";
int strlen=strhz.Length;
for (int i=0;i=strlen-1;i++)
{
strtemp+=hz2py(strhz.Substring(i,1));
}
return strtemp;
}
create table tabpy(id int identity,b_begin varbinary(2),b_end varbinary(2),word varchar(2))
insert tabpy select 0xB0A1, 0xB0C4,'A'
union all select 0xB0C5, 0xB2C0,'B'
union all select 0xB2C1, 0xB4ED,'C'
union all select 0xB4EE, 0xB6E9,'D'
union all select 0xB6EA, 0xB7A1,'E'
union all select 0xB7A2, 0xB8C0,'F'
union all select 0xB8C1, 0xB9FD,'G'
union all select 0xB9FE, 0xBBF6,'H'
union all select 0xBBF7, 0xBFA5,'J'
union all select 0xBFA6, 0xC0AB,'K'
union all select 0xC0AC, 0xC2E7,'L'
union all select 0xC2E8, 0xC4C2,'M'
union all select 0xC4C3, 0xC5B5,'N'
union all select 0xC5B6, 0xC5BD,'O'
union all select 0xC5BE, 0xC6D9,'P'
union all select 0xC6DA, 0xC8BA,'Q'
union all select 0xC8BB, 0xC8F5,'R'
union all select 0xC8F6, 0xCBF9,'S'
union all select 0xCBFA, 0xCDD9,'T'
union all select 0xCDDA, 0xCEF3,'W'
union all select 0xCEF4, 0xD1B8,'X'
union all select 0xD1B9, 0xD4D0,'Y'
union all select 0xD4D1, 0xD7F9,'Z'
函数:
create function getfirstpy(@a varchar(200))
returns varchar(100)
as
begin
declare @i int,@j int,@result varchar(100)
set @result=''
set @i=len(@a)
set @j=1
while @j=@i
begin
select @result=@result+word from tabpy where cast(substring(@a,@j,1) as varbinary(2)) between b_begin and b_end
set @j=@j+1
end
return @result
end
字符编码转换吗?
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
'转化为字节码
For i As Integer = 1 To n
sBytes(i - 1) = CByte("H" sInput.Substring(2 * i - 2, 2))
Next
'将字节码转化为字符串
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
'这里可以类推出好几种。