Re: [VB6 ] 请问LeftB函数

楼主: MOONRAKER (㊣牛鹤鳗毛人)   2014-06-17 19:02:45
※ 引述《finaldeath (<( ̄口 ̄)_且)》之铭言:
: A,B为英文字长度应为1
: 国为中文字长度应为2
: 但结果看起来是中英文字长度都变成2了
:
: 请问是我理解错误吗?
: 还是我有哪边设定错误了。
:
: 谢谢大家!
:
: → KawasumiMai:你的AB两字是全角吗? 06/17 18:52
跟全角没关系。原po可以试跑以下测试程式看看结果。
Sub leftbtest_host()
ss = leftbtest("Bolshevik")
ss = ss & leftbtest("AB汉字")
MsgBox ss
End Sub
Function leftbtest(s) As String
ss = ""
k = 2
For i = 0 To LenB(s) Step k
c = LeftB(s, i)
ss = ss & "[" & i & "]: " & c & vbCrLf
Next i
leftbtest = ss
End Function
如果这样可以输出看起来正常的结果(人看得懂),可以把k改为1或3看看。
 
作者: finaldeath (<( ̄口 ̄)_且)   2014-06-18 10:13:00
结果跑起来英文字真的被当成长度2用奇数跑,英文字会被截成乱码...
作者: EShensh (萧易玄)   2014-06-19 15:06:00
可能 Windows 系统核心不同吧,早期的 Win 不是 Unicode所以不建议这样的写法,应该要确认要处理编码比较好。不然在不同环境可能出来的结果不一样。
楼主: MOONRAKER (㊣牛鹤鳗毛人)   2014-06-20 00:19:00
UTF-16就是unicode, 原汁原味,哪有什么不是unicode的问题。这一个problem果然钓出各式各样的“好手”,科

Links booklink

Contact Us: admin [ a t ] ucptt.com