|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2017/3/15 19:33:26 |
标题: |
Unicode版本Delphi的一个问题 |
浏览:1715 |
|
加入我的收藏 |
楼主: |
算做个小调查,有没有经常用WebBrowser控件的兄弟,我有种感觉,好像Unicode版本以后的Delphi在使用Webbrowser控件的时候速度比之前ANSI版本(Delphi2007以及以前版本)的慢。 但是从道理上讲不管是否是Unicode的,本质上都是微软COM的DLL代码啊,速度不应该有明显差异的。 不知道是我的直觉还是怎么的,有兄弟们有这方面的体验吗?
----------------------------------------------
武稀松http://www.raysoftware.cn |
作者: |
|
2017/3/16 8:38:16 |
1楼: |
abc Ansi 3 个字节 unicode 6 个字节。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2017/3/16 8:51:34 |
2楼: |
你确定unicode 是6个字节? utf8是unicode么?
----------------------------------------------
-
|
作者: |
|
2017/3/16 8:54:48 |
3楼: |
UTF8是存储用的,内存里用的一般都是Unicode 16 (UCS2) [大约包含96.9%的UTF16字符]。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
|
作者: |
|
2017/3/16 10:14:47 |
4楼: |
我好像感觉不出来webbrowser有变慢
----------------------------------------------
QQ: 9717005 我的Blog:http://www.cnblogs.com/anydelphi/
|
作者: |
|
2017/3/16 11:13:10 |
5楼: |
webbrowser,不是用的是操作系统自带的IE内核吗,和delphi版本没关系吧
----------------------------------------------
-
|
作者: |
|
2017/3/16 11:17:51 |
5楼: |
2 楼,我们这些人水平低,我们认为 unicode 和微软的 WideString 差不多。 所以 是 2 个字节。 也就是 3 楼说的 unicode 16,其他的 unicode 我们不认识。
但是我们认识 UCS4 UCS2 。
也许您的 unicode 和我们的不一样,我们就不知道了。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2017/3/16 14:35:37 |
6楼: |
我擦,这都绕到那里去了
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
|
2017/3/16 14:54:50 |
7楼: |
刚才看了篇文章,分析了一下当前32位程序和64位程序哪个快,总的来说,目前“同等”硬件条件下还是32位程序稍快一些,不过也不是绝对的,以后随着各种64位软硬件的完善,64位程序的速度会赶上32位,就像之前16位转到32位一样。 64位是趋势,说不定再过段时间128位也要流行了(虽然早就有128位及以上的CPU了)。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
|
作者: |
|
2017/3/16 18:34:41 |
8楼: |
@wr960204 (武稀松) 哈哈,歪了,我的错。
我只是作个猜测,大多数网页使用的是UTF8,原来在Delphi7下,String作为单字节串,存储UTF8,无须做任何数据转换。但是,到DelphiXE下,UTF8到UTF16的转换成为一个不可避免的事情。
----------------------------------------------
-
|
作者: |
|
2017/3/16 19:22:32 |
9楼: |
5分钟写个程序验证一下就行了
----------------------------------------------
delphi你妹
|
作者: |
|
2017/3/17 0:03:12 |
10楼: |
@zwjchinazwj (蒲石) 其实编码转换效率是很高的,因为那些API就是用查表方式实现的.估计对效率会有一点影响,但不会特别大. 我总觉得Unicode版本Delphi的Webbrowser慢悠悠的,不如Delphi2007以前的那样快.但是又想不出理由
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
chzwb (zhonglai) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2017/3/17 8:03:23 |
11楼: |
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
----------------------------------------------
-
|
作者: |
|
2017/3/17 8:34:31 |
12楼: |
使用 unicode 也可以在网页上同时显示各国文字。 一般 unicode 用 2个字节表示一个字符,但是也有个别的字符是 4 个字节的,既 2 个 unicode表示一个字符。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2017/3/17 8:53:58 |
13楼: |
网页编码和文件编码是一样的,如果程序是Unicode版本的,最终还是得转换到Unicode16显示的,所以不矛盾。 64位程序从硬盘加载时因为体积比32位大,所以加载速度会慢一些,运行起来速度应该不慢的,如果你用SSD盘,那么几乎可以忽略不记了。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
|
作者: |
|
2017/3/17 9:55:54 |
14楼: |
12楼的,你就不要再误导人了。 UTF8 是一种Uncoide的编码形式,换句话说,就是unicode UTF16 也是一种Uncoide的编码形式,也是unicode UTF32 同样也是
UTF8 以byte单位,可能以(1, 2, 3 ...) 个字节表示1个字符 UTF16 以word单位,可能以(2, 4, 6 ...) 个字节表示1个字符 UTF32 类推。
注意,Unicode是号称可以表示世界所有字符的,因此,在1个字符存储空间是不可能限定为固定字节数,以UTF16为例,1个word(双字节)中,除了包含字符本身码点信息外,也包含了是否还需要后续的1个word拼在一起表达1个字符码。
综上所叙,无论UTF8 UTF16 UTF32哪种编码形式,都可以表达世界所有可能的字符。与此同时,由于字符存储长度不确定,传统的通过字符个数直接定位存储空间的方法变得不可用(例如, Str[20]这种读写方式),这也是为什么很多语言搞出一个只读的字符串类型的原因之一。
----------------------------------------------
-
|
作者: |
|
2017/3/17 10:23:11 |
15楼: |
我已经说了 我水平低啊。 我在 5 楼 说了 我对 unicode 的理解。 而且 EMB 公司也样。 你不信去看 UnicodeString 的定义。 EMB 可没说 这个类型 是你说的那么好几种的意思。
如果你想知道一个字符串内有多少个字符,请转成 UCS4 字符串。 EMB 转出来的 UCS4 默认是带 #0 的。
----------------------------------------------
(C)(P)Flying Wang
|
|