當前位置:偏方大全网 - 藥品查詢 - VB中的單個字符轉換成拼音不能顯示嗎?如何解決

VB中的單個字符轉換成拼音不能顯示嗎?如何解決

妳的漢字轉換成拼音的函數是常用漢字,取-20319到-10247帶ASCII的漢字。

妳的孢子都在這個範圍之外。..

解決辦法只能是找壹個更完整的碼表...例如,它包含壹些GBK字符。

補充:我發現了壹個替代方案:

====================================

模塊:

選項顯式

私人常數IME _ ESC _ MAX _ KEY = &H1005

私人常數IME _ ESC _ IME _ NAME = & amp;H1006

私人常數GCL _ reverse conversion = & amp;氘

私有聲明函數GetKeyboardLayoutList Lib " user 32 "(ByVal nBuff壹樣長,lpList壹樣長)壹樣長

私有聲明函數ImmEscape Lib "imm32.dll "別名" ImmEscapeA" (ByVal hkl As Long,ByVal himc As Long,ByVal un As Long,lpv As Any)Long

私有聲明函數ImmGetConversionList Lib " imm32 . dll "別名" ImmGetConversionListA "(ByVal hkl As Long、ByVal himc As Long、ByVal lpsz As String、lpCandidateList As Any、ByVal dwBufLen As Long、ByVal uFlag As Long)Long

私有聲明函數IsDBCSLeadByte Lib " kernel 32 "(ByVal bTestChar As Byte)壹樣長

公共函數GetChineseSpell(ByVal中文為字符串,可選PYTYPE為Integer = 0,可選分隔符為String = " ")為字符串

If Len(Trim(中文))& gt那麽0

暗淡我壹樣長

將s作為字符串變暗

s =空格(255)

Dim IMEInstalled為布爾值

Dim j As Long

Dim a() As Long

ReDim a(255)壹樣長

j = GetKeyboardLayoutList(255,a(LBound(a)))

對於i = LBound(a)至LBound(a) + j - 1

如果ImmEscape(a(i),0,IME IME名字,ByVal s)那麽

如果Trim("微軟拼音輸入法")= replace (trim (s),chr (0),"")那麽。

IMEInstalled = True

為...退出

如果…就會結束

如果…就會結束

接下來我

如果我安裝了

中文=修剪(中文)

Dim sChar作為字符串

Dim Buffer0()為字節

Dim bBuffer0()為字節

Dim bBuffer()作為字節

Dim k As Long

Dim l壹樣長

Dim m As Long

對於j = 0到Len(中文)- 1

sChar = Mid(中文,j + 1,1)

如果不是InStr(“”./?、][{}""'';:!〈〉「」『』|〖〗()〔〕{}…—.,""'';:?/\!“,sChar)& gt;那麽0

Buffer0 = StrConv(sChar,vbFromUnicode)

如果IsDBCSLeadByte(Buffer0(0))則

k = ImmEscape(a(i),0,IME_ESC_MAX_KEY,Null)

如果k那麽

l = ImmGetConversionList(a(i),0,sChar,0,0,GCL_REVERSECONVERSION)

如果我那麽

s =空格(255)

如果ImmGetConversionList(a(i),0,sChar,ByVal s,l,GCL_REVERSECONVERSION)則

bBuffer0 = StrConv(s,vbFromUnicode)

ReDim bBuffer(k * 2 - 1)

對於m = bBuffer0(24)到bBuffer0(24) + k * 2 - 1

bBuffer(m-bBuffer 0(24))= bBuffer 0(m)

下壹個m

sChar = Trim(StrConv(bBuffer,vbUnicode))

If InStr(sChar,vbNullChar)然後

sChar = Trim(Left(sChar,InStr(sChar,vbNullChar) - 1))

如果…就會結束

如果…就會結束

如果…就會結束

如果…就會結束

如果…就會結束

如果…就會結束

GetChineseSpell = GetChineseSpell & amp;Switch(PYTYPE = 0,sChar,PYTYPE = 1,Left(sChar,Len(sChar) - 1),PYTYPE = 2,UCase(Left(sChar,1))& amp;IIf(PYTYPE = 2,"",Delimiter)' '返回整個拼寫。

下壹個j

Else ' '沒有安裝“微軟拼音輸入法”,返回了壹個空格。

GetChineseSpell = " "

如果…就會結束

其他

GetChineseSpell = " " ' '輸入是空字符串。

如果…就會結束

結束功能

下面是表單代碼:

私有子命令1_Click()

打印GetChineseSpell(《孢子賦》,2)

末端接頭

==============================

註意,

1.確保系統安裝了微軟拼音輸入法,否則會返回壹個空格。..

2.模塊中沒有標點符號,或者沒有完全標點符號。妳應該在程序中自己處理或修改模塊。

3.用法有三個參數,0是返回帶單調性的整個拼寫,1是返回完整的拼音,2是返回拼音的首字母。..

測試通過,VB妮可。

  • 上一篇:婦產科醫生個人工作總結範文
  • 下一篇:臨泉電大什麽時候可以報名?
  • copyright 2024偏方大全网