说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

讲解一下UNICODE,它和ASCII有什么不同.我很糊涂.

编辑:说三道四文库 发布时间:2017-10-20 12:26
HTML文档下载 WORD文档下载 PDF文档下载
rt
ASCII占1字节,UNICODE占2字节。
因此ASCII表示的字符数最多只能到256,而UNICODE可以达到65536,可以把世界上的各种文字统一编码。
即使是英文,用UNICODE也要2字节。
我也很糊涂..........
关于unicode与ascii的区别,你找本charles petzold的 <<windows 程序设计>>,那里面讲的很清楚的。
有啥糊涂,只要记住:“UNICODE占用两个字节”
Unicode vs Ansi

Visual Basic 32-bit 版本的字串处理采用 Unicode,也就是说字串在 VB 内部是以
Unicode 的格式来存放。

何谓 Unicode?简单的说,就是每一个字元都是以 2-byte 的型式表示,而每个「实
体字元」就是一个「字元」。因此,

Len("大家好")
Len("abc")

所传回的值都是 3,因为「大」和「a」都是一个字元。

但是这对一些中文字串处理,例如纯文字的资料档,却是一个大灾难,因为你必须以
byte 来定位每个字元,可是 Unicode 却把一切的处理全搞砸了。例如:

Len("Good Morning") 传回 12,而
Len("今天天气很好") 传回 6

对初学者而言,好不容易能使用 VB 来写程式已经是件了不起的事了,却马上在中文
处理上挨了一记闷棍,所受到的打击实在不小。但是不要怕,事实上只要再多了解一
些指令,就可以把中文处理的问题解决了。

是什麽指令呢?最重要的莫过於 StrConv 了。StrConv 函式的语法为:

StrConv(待转换字串, 转换格式)

其中转换格式在这里用到的是:

vbUnicode 将 Ansi 字串转换为 Unicode
vbFromUnicode 将 Unicode 字串转换为 Ansi

将字串转成 Ansi 之後,所有的字串处理指令都要加个 B,例如:LeftB, RightB,
MidB, ChrB, InstrB, LenB, InputB 等。例用这些指令来处理就行了。

当你处理完毕之後,你可以再将它再转回 Unicode,这样就可以使用一般的字串处理
指令了。

这样讲看得懂吗?如果还是不了解,看看下面的实例说明:

[●] 简易使用范例

看看下面的基本范例您应该就会对 VB 的字串处理方式有些概念。

Private Sub Command1_Click ()
Dim sUnicode As String
Dim sAnsi As String

' Unicode 运算
sUnicode = "王小明,A123456789,651023,台北市中山路100号,(02)2345678"
Debug.Print Len(sUnicode) ' 传回 44
Debug.Print Mid$(sUnicode, 5, 10) ' 传回 A123456789
Debug.Print Instr(sUnicode, "台北市") ' 传回 23

' 将 Unicode 字串转成 Ansi
sAnsi = StrConv(sUnicode, vbFromUnicode)
' Ansi 运算
Debug.Print LenB(sAnsi) ' 传回 54
Debug.Print MidB$(sAnsi, 8, 10) ' 传回 ?????,因为忘了转回 Unicode
Debug.Print StrConv(MidB$(sAnsi, 8, 10), vbUnicode) ' 传回 A123456789,请注意转回 Unicode 的动作一定要做
Debug.Print InStrB(sAnsi, StrConv("台北市", vbFromUnicode)) ' 传回 23, 不要忘了要把"台北市"也转成 Ansi,否则会找不到
End Sub

[●] 读入文字档

在 VB 的小技巧中,有一个是快速读档法:

Private Sub Command1_Click ()
Dim sFile As String

Open "C:\filename.txt" For Input As #1
sFile = Input$(LOF(1), #1)
Close #1
End Sub

但是很不幸地,如果你读取的档案内含中文字,那上面这段程式会出现 Input past
end of file 的错误。因为 LOF 传回的是档案的 byte 数,而 Input 函式读取的是
字元数,由於档案内含中文,因此档案中的字元数将会小於 byte 数,於是就发生错
误了。

要解决这个问题,我们就要用到 StrConv 和 InputB 这两个函式了:

Private Sub Command1_Click ()
Dim sFile As String

Open "C:\filename.txt" For Input As #1
sFile = StrConv(InputB$(LOF(1), #1), vbUnicode)
Close #1
End Sub

上面修正程式先用 InputB 将档案读进来,不过使用 InputB 所读入的档案是 Ansi
格式的,所以要再用 StrConv 转成 Unicode 才行。

[●] 随机资料档

许多文字资料档是以固定位元组的位置来加以区格,例如下面的资料格式:

王小民650110台北市中山路100号 (02)1234567
张大呆660824花莲县大甲镇广东街23号(03)9876543
......

像这种类型的档案要如何处理呢?这是就必须用到 Type 以及 byte array 了。

Private Type tagRecord
Username(5) As Byte ' 姓名 6 bytes
Birthday(5) As Byte ' 生日 6 bytes
Address(21) As Byte ' 地址 22 bytes
TEL(11) As Byte ' 电话 12 bytes
CrLf(1) As Byte ' 换列字元 2 bytes
End Type

Private Sub Command1_Click()
Dim uRecord As tagRecord

Open "C:\filename.dat" For Random As #1 Len = LenB(uRecord)
Get #1, 2, uRecord ' 取第二笔资料

With uRecord ' With ... End With 应该会用吧
Debug.Print .Username ' 传回 ???
Debug.Print StrConv(.Username, vbUnicode) ' 传回 "张大呆"
End With

Close #1
End Sub

在这个例子中,一定要用到 byte array,因为只有 byte array 才能正确地定位到每
个 byte 的位置。以前使用字串来定位的方法已经不适用了,千万要记住!但是使用
byte array 所读入的资料是 Ansi 格式,若要处理或是做运算的话,记得还要转成
Unicode 格式才行。

[●] 使用 Byte Array

除了上面必须使用 byte 精确定位的例子之外,纯文字的处理基本上是用不到 byte
array 的。byte array 通常是用在处理 binary 资料。这方面的问题我们将另文讨
论。

看吧!只要熟悉使用 StrConv,你就可以在 Unicode 及 Ansi 格式之间自由自在地变
来变去,相信当您看完这篇文章之後,对处理中文应该不再烦恼了吧! 

--------------------------------------------------------------------------------
Site
谢了,加分
收藏
收藏 
大数据应用(下):应用驱动技术,DaaS创造价值 大数据研究与发展专题论坛:大数据在各领域中的应用及发展策略 雅虎新目标:欲收购照片分享网站Imgur 移动开发工具访谈《近匠》第01期:七牛云存储—BaaS进化论 ShareSDK:A轮融资到位!将推社会化评论SDK 70美元,你也能用Raspberry Pi做个专属iBeacon基站 7个鲜为人知却超实用的PHP函数 从管理远程式团队和分布式团队中所获得的宝贵经验 Netflix开源数据流管理器Suro Google新创意:天花板加麦克风 人脑植芯片 苹果获弯曲屏新专利 可给手机弄个大波浪卷 真正的跨平台硬件测试:3DMark已打通PC、iOS、Android 将Chrome浏览器变成终端工具 【开源推荐】AllJoyn:打造全球物联网的通用开源框架 21张图带你走进Google数据中心 Snapchat C轮融资5000万美元 投资方是Coatue Management 又一个被谷歌寄生的平台,Chrome应用启动器现来到OS X上 雷军遇上刘德华:创业、艺术、移动互联网 为了抗衡Android,传微软开始考虑WP和WinRT免费 维护代码库的五个精华实践 微软发布安全补丁 IE11.0.2随之而来 Qt 5.2正式版发布 全面支持移动平台 如何节约手游制作成本?揭秘CocoStudio编辑器强悍功能 市场竞争白热化:三大云服务商上演双十二“三国杀” UCloud联手盛科实现SDN硬件应用 AWS,还有多远? Instagram推新私信功能Direct:支持照片、视频和文本信息 微软CEO鲍尔默最后一次受访:我的正确决定远远大于过错 中国创新碰撞硅谷思潮, 2013云世界大会定义云时代 Mozilla与设备商、运营商成立开放Web设备联盟 研发周报:暴露程序员身份的8个行为 用VC.net应该怎么调试.cpp文件 老有人反复发一些老帖子,早被别人转了几百遍了,烦啊! 展示 怎样删除页面布局表格 或 页面布局单元 各位大侠,外挂里的自动捡物是怎么实现的? 如何在运行中删除动态创建的 POPUPMENU 的某个菜单项呢? 安装包怎么做? 怎样将mysql数据库里某个字段的所有值绑定到form的<select>选项里。 我的com+组件两台机器间不能执行方法 怎样获得InputBox、InputQuery的值? 我用的光盘版的maya5.0,serial number不对啊?谁有可以用的啊? 请教:MPP文档是什么概念啊? 哪里有VF做的工资管理系统下载 怎样在一个中英文混合的字符串中添加回车键后而不出乱字符 救命啊!!!!! 关于ocx的问题 如何响应Esc键按下? 寻开发公司 EVB 如何修改 Grid的字体? 怎样来查找在线游戏、即时聊天软件所使用的端口号? 搞过数据库的进来瞧瞧 表中有自增类型字段id,用TABLE 控件与之相连,记录增加时,ID怎么 在asp中我想等程序执行完了,直接把窗口关闭,不要出现提示 session怎么不见了?解决了马上送分 有关CORBA产品:VisiBroker的问题 怎样加密字符串? {200分}请问关于在子窗口中选择多值以后传递给父窗口中一个多值域的问题! 一个关于oracle中加锁的问题 请问这是什么错误? SQL 连接小问题 急求C++Builder 6的 ADO 补丁!(warmwk) 高分求救:在QT下,我已经实现了对一个XML的解析,但是对DTD的解析如何实现,谁给我讲讲,或者给我源代码更好。 关于ImportFile()执行后数据窗口update()的问题 有人参加过软件测试工程师的认证吗? 寄存器分段。。。 请问哪里有数据库设计规范方面的资料 关于使用inet控件对ftp操作的问题 一个设计方面的问题,各位高手请进!! 急急!清VB.net高手帮助.如何实现利用扬声器发生程序? 对象参数问题 如何得到文件路径 关于窗体的管理 JAVA代码操作数据库备份MYSQL? 我要将TEST01下所有的表授权有没有更简便的方法??? 数据库面试题,大家看看(给分无商量) 存储过程问题拉!帮忙看看吧! 关于ExportMap输出图片的问题? Image控件的问题? sql server 连接 请问无组建上传的详细代码解释。 怪问题! 如何推进廉洁政治建设 告诉我这些句子怎么改,并把改的意思告诉我原句:I can finish the job with myself.原句:I have to took a taxi last night.原句:You needn't to write it down.原句:Who's that beside to her?原句:She was a sixteen-years old g 句子的类型是不是修辞手法? 什么样是廉政 小学英语改错题,请说明理由,I am too very busy recently.She has time enough to rest.His brother smokes much too. Arcgis里GE~KML~Shp~投影~calculate geometry出的面积为什么偏大啊?利用谷歌地球画出多边形kml转到Arcgis后,定义shp格式WGS1984,再进行投影PCS:WGS1984 WordMercator,然后新建字段求面积calculate geometry出的 一座房子有树枝伸出去了是什么成语 单句改错怎么改,请说明理由 分析解释一下下面两个英语句子,How far is it from his home to school how long does it take you to get from home to school 一座房子,里面有树枝冒出来!打个成语? 帮我把这个句子改成简单句吧,谢谢!谁能帮我把这个句子改成两个简单点的句子啊,觉得太复杂,太别扭了!in front of a pile of so-called “famous brand” fake leather shoes and under a signboard of “honest dealer 已知学校航模组设计制作的火箭的升孔高度h(m)与飞行时间t(s)的关系式h=-t²+26t+1,如果火箭在点火升空到最高点是打开降落伞,那么火箭点火后多少时间降落伞将打开?这是该火箭的高度是多 一座房子上面有树枝是什么成语? 英语翻译I truly feelthat my mother led me here,to Morzaine,and to my future as a happy wife andbusiness woman.When Mum died in October 2007,I was a cook.In Decemberthat year,while I was working for a wedding,a pearl necklace Mum had leftme disapp 设计一个程序,类似于下面的输出.直到火箭完成的飞行时间和高度输出应类似于以下内容:图 提示用户火箭的长度(米)和火箭的初始米/秒的速度.计算火箭获得最大高度的时间,当使用公式 这句话的出处 有人知道?一个人的一生中,总该有那么一次,为了梦想,为了远方,义无反顾.最好是本书 还可以 稍稍看一下,期待 一下吧. 将下列英语句子改为简单句I can't decide where Ishould go to spend my weekend.I can't decide where ( ) ( ) to spend my weekend. 近义词; 平和-----( ) 一脉相承------( ) 有人知道这句话的出处吗?西方女权主义者普兰·德·拉·巴雷说过:“男人写的所有有关女人的书都值得怀疑,因为他们既是法官,又是诉讼当事人.” 把下面的句子变为简单句restaurant owners have to know how they can make money 简述沟通的基本要素 简答题 石棉网的原材料,制作和用途 改句子,The milk is so hot that I can't drink it.The milk is _____ hot _____ me to drink.14.3 西周“六艺”中与体育有关的内容是( )西周“六艺”中与体育有关的内容是( )A.礼、乐 B.书、教 C.诗、书 D.射、御 下雨天 走路的人与骑车的人在不打伞时 哪一个淋湿的快请快 ,把下列四个句子变成一个非简单句和一个简单句:The only sign of life was an ugly black goat.Tt was tied to a tree.The tree was in a field nearby.The whole village seemed deserted. 把下列形声字按形旁声旁分类,完全正确的一组是( ).1绿2闷3管4豪5凳6爸7雄8窍9园10幅11慈12藤A.137 10 B.2469 C.368 12 D.59 11 12.快呀!!!急急急急!!!!! 知足者常乐的作文 为什么要开展中华优秀传统文化教育 怎么样切洋葱不辣眼睛呢?刀刃沾水的方法果断抛弃了····· 信誉的价值一文中的妻子明白了什么? 我国为什么要加强文化教育请问为什么 男女之间很好很好很好的朋友是什么意思啊 用母字组词用够,母,员字组词急用.4个以上 把这几个句子变成简单句 急已经另外提问 sorry 在ABCD内找一点O,使它到四个顶点距离之和最小,并说明理由. 一个一个房子后面有个树枝,求成语 英语,将句子改为简单句It is the first spaceship that wasn't made by the government. 你认为在abcd四个数中那个最大,说明理由设a=1÷2÷3÷4.b=1÷【2÷3÷4】.c=1÷【2÷3】÷4,d=【1÷2】÷【3÷4】, 摸别人头有几种意思? 将英语句子改为简单句It is the first spaceship that wasn't made by the government. 如图所示,四边形abcd中,角b等于角d等于 90度,是说明abcd在同一个我园上 楼房上面有树枝、啥成语? 请将语文中中修辞手法 表现手法 的种类及作用说一下像 比喻:作用. 寻找成语 虽然一个人 但是也过的很好的成语 或者话语 求字:杀+式.组词: 恋恋不舍的近义词 耶稣是一个特别的婴儿吗 用英语怎么说 请根据提示组词成句 than content better is riches 知足者常乐 ( ) 美团唱歌是怎么算的美团唱歌一般都有9.9元的,我想问9.9是算一个人的呢还是几个人都可以 把一个小球垂直向上抛,小球上升的高度h(m)与时间t(s)有如下公式h=24t-5t2.该球上升的最大高度是多少 有关知识改变命运的诗词名句!最好有相关的事例! 恋恋不舍的近义词和反义词 在ARCGIS的面图层里面增加一个newarea属性字段,然后进行Calculate Geometry为什么会出现部分属性值为零?怎么进行修改?我是初学者, 小孩子经常重力敲击头部 的影响小孩子经常被拳头重力敲击头部,现在看起来没事,有没有后遗症非诚勿扰,希望尽可能是科学认真的回答如果有影响,是否有什么补救的方法,也希望告知,我会一 津津有味的反义词 饥寒交迫的反义词 习以为常的近义词 帖能组什么词快 有解释最好spring Festival is coming and during the Travel Rushspring Festival is coming and during the Travel Rush,people can___get train tickets.A lot of people can't go home this year.A.hard B.hardly C.difficult D.harder 帮我看看这句话该怎么改 或者直接告诉我英语要怎么说我想说我怀疑你有没有观察过中国人是怎样去救地政灾民的.anonybabe I doubt that you have obvious chinese how to saved earthquake victims...obvious 好象 为什么是反馈? 加拿大暴风雨30多万人受影响加拿大少数族裔报纸陷入财政困境洛杉矶机场枪击案嫌犯或因被辞退报复社洛杉矶机场枪击案嫌犯或因被辞退报复社四川公务员上班陪领导游泳溺死续:副局三学童上学时遭绑架遇害 家长质疑校方男子驾车遭陌生人袭击追逐 逃到派出所上海自贸区“满月” 周边房价上涨三到专家:“以房养老”适合中国国情 明年媒体追问3小学生被绑架杀害:校车为何公安部要求依法从重从快打击航班“诈弹广西醉酒警察枪杀孕妇案死者家属拒绝政专家称今年将有45万人出国留学 90印度首都发生工厂火灾6人死亡两名法国记者在马里遭杀害南太平洋岛国汤加附近海域发生6.5级北京市委书记:把反恐防暴切实纳入维稳卫计委:医疗服务费用单纯靠政府承担是48家汽车生产企业将接受整顿 考核仍哈里王子遭英报窃听4名中国记者获国际科学记者奖新疆爱心团体捐助火灾家庭“盼更多人帮常州左岸公益助学新疆伊犁乌鲁木齐市公安局开展警务实战技能培训新疆报废汽车回收数量大幅下降晨报社评:用好“最后一公里”打通“最益讯:公益童书馆募集童书新疆维吾尔自治区第四监狱29名狱警献丝路宝贝:焉知“胡瓶”更美揭秘“会说慌的里程数”10分钟内11新婚夫妇下基层微信传情 “最后一公里乌鲁木齐市交警查“黑车” 司机扔下车乌鲁木齐地铁即将施工尽量不影响交通乌鲁木齐市高端玉价小步上扬新疆住村干部携氧气袋坚持工作庄仕华:武警新疆总队医院按月查医生处乌鲁木齐收藏专家提醒:这四句话那能当镇店之宝:这窝恐龙蛋二十万卖了赎回难春季家电建材展销会盛大开启 20元门今年乌鲁木齐将投3.5亿元改造热网 周日来晨报 三位明师助你“高考备战”聚焦:新疆公益团结各族构造和谐之桥
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘