斑竹或經驗丰富者進

thorkhan 2002-04-14 03:28:21
在下可用分只有56分了,全給
如和在VB中調用各种語言包,例如在繁体Windows下調用簡體語言包能顯示簡體(GBK)的漢字,在簡體Windows下調用繁体(Big5)語言包,顯示繁体字,不過我說的不是簡繁体的轉換,BIG与 GB碼的轉換我會,
我就是實現IE的編碼轉換,不過我要實現的是在Richbox中實現,而不是用WebBrowser
實現,各位多幫手了,先謝
...全文
6 点赞 收藏 38
写回复
38 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fuxc 2002-04-16
首先,IE显示繁体字,用的是繁体字库:MingLiu,其中字符编码,用的是ANSI,但VB有一个问题,当你进行字符串赋值的时候,VB会自动把ANSI转换成Unicode,所以无法通过调用字库来显示,这一点,我还是没有办法。

如果通过转换Unicode来显示,问题只是慢的话,我推荐你看一篇文章:

http://llf.my.west163.com/studio/unicode.htm
回复
sunlife 2002-04-16
要显示特定格式的字体,系统要有相应的字库才行,要不程序能调用自带的字库也可以(这个我不会,菜鸟一个);ie那个编码也是要有相应的字库才能进行的,要不怎么有时候上网会提示安装字体呢
回复
fuxc 2002-04-16
VB中可以用Byte数组来处理ANSI、DBCS字符集,但当你赋指给文本类型(或者隐式地转换成文本类型)时,VB自动把他转换成Unicode,所以不管你把文本赋值给RichTexBox的Text属性,还是RichText属性,都没有机会把它当作Ansi来处理,如果一定要用VB处理的话,只能想办法在转换过程中提高效率,

我上面提供的一个网址是个个人网页,作者在这方面很有经验,你可以跟他联系一下。
回复
fuxc 2002-04-16
ANSI 和 Unicode 的定义


Visual Basic 使用 Unicode 存储和操作字符串。Unicode 是一种用两个字节表示一个字符的字符集。另外一些程序,如 Windows 95 API,使用 ANSI (American National Standards Institute) 或 DBCS 存储和操作字符串。当从 Visual Basic 移出字符串时,会遇到 Unicode 和 ANSI/DBCS 之间的差别。下表列出了不同环境下 ANSI、DBCS 和 Unicode 字符集。

环境 使用的字符集
Visual Basic Unicode
32-bit 对象库 Unicode
16-bit 对象库 ANSI 和 DBCS
Windows NT API Unicode
Automation in Windows NT Unicode
Windows 95 API ANSI 和 DBCS
Automation in Windows 95 Unicode


ANSI
ANSI 是个人计算机使用得最普遍的字符集。由于 ANSI 标准使用单一字节表示每个字符,因此最多只能有 256 个字符和标点符号代码。虽然对英语来说已经足够了,但不能完全支持其它语言。

DBCS
发行在亚洲大部分地区的 Microsoft Windows 系统使用 DBCS。它支持很多不同的东亚语言字母,如汉语、日语和朝鲜语。DBCS 使用数字 0–128 表示 ASCII 字符集。其它大于 128 的数字作为前导字节字符,它并不是真正的字符,只是简单的表明下一个字符属于非拉丁字符集。在 DBCS 中,ASCII 字符的长度是一个字节,而日语、朝鲜语和其它东亚字符的长度是 2 个字节。

Unicode
Unicode 是用两个字节表示每个字符的字符编码方案。国际标准组织 (ISO) 几乎为每种语言的每个字符和符号在 0 到 65,535 (216 – 1) 范围内定义了一个数字(再加上为将来发展保留的一些空余空间)。在所有 32 位版本的 Windows 中,部件对象模型 (COM) 都使用 Unicode,它是 OLE 和 ActiveX 技术的基础。Windows NT 全部支持 Unicode。虽然 Unicode 和 DBCS 都是双字节字符,但它们的编码方案完全不同。

字符代码示例
图 16.4 显示了每一个字符集中的一个字符代码示例。注意双字节字符每一个字节的代码不同。

图 16.4 ANSI、Unicode 和 DBCS 中 "A" 的字符代码




回复
txs 2002-04-16
不行的,这和以前在DOS或者西文WIN下显示汉字一样,要用字库自己画。要用HOOK等技术。
回复
shan__le 2002-04-16
哈,土八路都不懂:) 我也学习:) UP
回复
thorkhan 2002-04-16
難道VB就做不到了嗎﹖
回复
CheerDesiger 2002-04-15
用getOemCp得到當前Windows的碼﹐
下面是各種碼的說明
437 MS-DOS United States
708 Arabic (ASMO 708)
709 Arabic (ASMO 449+, BCON V4)
710 Arabic (Transparent Arabic)
720 Arabic (Transparent ASMO)
737 Greek (formerly 437G)
775 Baltic
850 MS-DOS Multilingual (Latin I)
852 MS-DOS Slavic (Latin II)
855 IBM Cyrillic (primarily Russian)
857 IBM Turkish
860 MS-DOS Portuguese
861 MS-DOS Icelandic
862 Hebrew
863 MS-DOS Canadian-French
864 Arabic
865 MS-DOS Nordic
866 MS-DOS Russian (former USSR)
869 IBM Modern Greek
874 Thai
932 Japan
936 Chinese (PRC, Singapore) 簡體
949 Korean
950 Chinese (Taiwan Region; Hong Kong SAR, PRC) 繁體
1361 Korean (Johab)

Public Declare Function GetOEMCP Lib "kernel32" Alias "GetOEMCP" () As Long

回复
thorkhan 2002-04-15
等待中﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒
回复
wgku 2002-04-15
HE HE ... 其实我也不大懂,只不过提个思路。
回复
xxlroad 2002-04-15
不懂 只能替你UP
回复
thorkhan 2002-04-15
等待﹑等待﹑再等待﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒
回复
rivershan 2002-04-15
帮你UP~
回复
thorkhan 2002-04-15
各位兄弟姐妹快來啊﹖
回复
thorkhan 2002-04-15
To fuxc(Michael):
謝謝妳的回答﹐不過我說了妳的方法只是用VB內置的內碼轉換功能轉換Big与Gbk碼﹐這妳還沒看情我說的意思嗎﹖我說的是識別不是轉換﹐轉換我會﹐但也不是用Strconv函數用這种方法來轉換GB\GBK到Big5碼是非常好的,可是把Big5碼轉過來的話,結果居然是繁体﹐而且速度也較慢
回复
fuxc 2002-04-15
Private Sub Command1_Click()
Dim strTemp As String
Text1 = "⒋ら筿(癘窥)莱φㄤ㎝瓣羆瞶甁城蝴疭┰甁の㎝瓣羆参縫ぺ┰㎝ェㄈ㎝瓣現┎淋叫瓣叭皘羆瞶Χ妈膀さぱと盡诀瞒秨ㄊ玡┕瓃瓣秈︽タΑ砐拜国"
strTemp = StrConv(Text1, vbFromUnicode, &H804)
Me.RichTextBox1 = StrConv(strTemp, vbUnicode, &H404)
End Sub

试试看~~
回复
thorkhan 2002-04-15
等待中﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒﹒
回复
thorkhan 2002-04-15
To fuxc(Michael):
用StrConv函數能實現Big5与GB2312的轉換﹐但我問的這個問題好像是實現不了
回复
bucher 2002-04-15
Unicode需要操作系统支持,只有Winnt系列直接支持Unicode。如果系统安装过繁体字显示支持,那么你的程序就可以直接显示GB5汉字,反之亦然。如果不安装繁体字显示支持,直接想用程序来画,恐怕相当麻烦。
回复
fuxc 2002-04-15
用StrConv 函数
RichTextBox本身支持Unicode
把文本转成Unicode就行了
回复
加载更多回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
VB基础类
创建于2007-09-28

7490

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2002-04-14 03:28
社区公告
暂无公告