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