vb6如何获取某个字母开头的所有汉字?
能找到获得汉字首字母的方法:(以D为例)i=Asc(mystr)SelectCaseiCase-20319To-20284:py="A"Case-20283To-1977...
能找到获得汉字首字母的方法:(以D为例)
i = Asc(mystr)
Select Case i
Case -20319 To -20284: py = "A"
Case -20283 To -19776: py = "B"
Case -19775 To -19219: py = "C"
Case -19218 To -18711: py = "D"
......
但是我反过来用,效果不好,很多都是问号。(以D为例)
For x = -19218 To -18711
Text1.Text = Text1.Text & vbCrLf & Chr(x)
Next
End Sub
我觉得应该有更好的办法获取某个字母开头的所有汉字吧,用unicode或其他的编码来确定? 展开
i = Asc(mystr)
Select Case i
Case -20319 To -20284: py = "A"
Case -20283 To -19776: py = "B"
Case -19775 To -19219: py = "C"
Case -19218 To -18711: py = "D"
......
但是我反过来用,效果不好,很多都是问号。(以D为例)
For x = -19218 To -18711
Text1.Text = Text1.Text & vbCrLf & Chr(x)
Next
End Sub
我觉得应该有更好的办法获取某个字母开头的所有汉字吧,用unicode或其他的编码来确定? 展开
展开全部
改成这样即可:
For X = -19218 To -18711
k = X And &HFF
If k >= &H40 And k <> &H7F And k <> &HFF Then
Text1.Text = Text1.Text & vbCrLf & Chr(X)
End If
Next
汉字的GBK字符集中的内码是有范围限制的,其中高位是从&H81到&HFE,低位是从&H40到&H7E以及&H80到&HFE,所以并不是随便说出一个整数都有一个对应的汉字,必须符合上述的规则才行。
补充:GB2312字符集的内码范围则是:高位&HA1到&HF7,低位&HA1到&HFE
由于只有GB2312的字符才是按拼音排列的,所以你的代码最好改为:
For X = -19218 To -18711
k = X And &HFF
If k > &HA0 And k < &HFF Then
Text1.Text = Text1.Text & vbCrLf & Chr(X)
End If
Next
如果想获得所有拼音首字母相同的汉字,你就必须自己做个数据库了
For X = -19218 To -18711
k = X And &HFF
If k >= &H40 And k <> &H7F And k <> &HFF Then
Text1.Text = Text1.Text & vbCrLf & Chr(X)
End If
Next
汉字的GBK字符集中的内码是有范围限制的,其中高位是从&H81到&HFE,低位是从&H40到&H7E以及&H80到&HFE,所以并不是随便说出一个整数都有一个对应的汉字,必须符合上述的规则才行。
补充:GB2312字符集的内码范围则是:高位&HA1到&HF7,低位&HA1到&HFE
由于只有GB2312的字符才是按拼音排列的,所以你的代码最好改为:
For X = -19218 To -18711
k = X And &HFF
If k > &HA0 And k < &HFF Then
Text1.Text = Text1.Text & vbCrLf & Chr(X)
End If
Next
如果想获得所有拼音首字母相同的汉字,你就必须自己做个数据库了
展开全部
GB 2312标准共收录6763个汉字,一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是 72*94=6768。其中有5个空位是D7FA-D7FE。
参考:http://baike.baidu.com/view/443268.htm
所以你使用这样的范围方式输出肯定会产生很多不在GB标准之内编码,起码对于低位字节就包含了很多不在0xA1-0xFE之间的编码值,这肯定会产生问号的.
另外,这6763个汉字之外的汉字(比如GBK扩展部分),内码可不是按照拼音顺序排列的,这种方式取拼音字母和产生汉字仅限于GB2312.
参考:http://baike.baidu.com/view/443268.htm
所以你使用这样的范围方式输出肯定会产生很多不在GB标准之内编码,起码对于低位字节就包含了很多不在0xA1-0xFE之间的编码值,这肯定会产生问号的.
另外,这6763个汉字之外的汉字(比如GBK扩展部分),内码可不是按照拼音顺序排列的,这种方式取拼音字母和产生汉字仅限于GB2312.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询