内码转换(Shift-JIS -> GBK)中遇到的问题, 有经验的大师请看过来
Function SJisToGBK(sSJis As String) As String
Dim iLen As Integer
Dim sUnicode As String
Dim sGbt As String
Dim sGbs As String
iLen = LenB(sSJis)
sUnicode = Space(iLen + 1)
MultiByteToWideChar 932, 0, sSJis, -1, sUnicode, iLen
iLen = LenB(sUnicode)
sGbt = Space(iLen + 1)
sGbs = Space(iLen + 1)
WideCharToMultiByte 936, 0, sUnicode, -1, sGbt, iLen, vbNullString, 0
iLen = LenB(sGbt)
LCMapString &H804, &H2000000, sGbt, iLen, sGbs, iLen
SJisToGBK = sGbs
End Function
是由网上搜来的一个 BIG5 -> GBK 的函数改的, 不过其中一些参数没弄得很明白, 只好照抄.
试了一下, 发现一些问题, 一是片假名无法转换, 二是部分汉字的转换会出现异常, 返回值里有一大堆问号.
请大家指点一下, 非常感谢.
问题点数:100、回复次数:3Top
1 楼mndsoft(枕善居(http://www.mndsoft.com/)回复于 2006-03-10 08:27:46 得分 10
顶一下。Top
2 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-10 09:29:04 得分 45
DECLARE FUNCTION ConvertINetString _
LIB "MLANG.DLL" _
ALIAS "ConvertINetString" ( _
BYREF lpdwMode AS DWORD, _
BYVAL dwSrcEncoding AS DWORD, _
BYVAL dwDstEncoding AS DWORD, _
BYREF lpSrcStr AS ANY, _
BYREF lpnSrcSize AS LONG, _
BYREF lpDstStr AS ANY, _
BYREF lpnDstSize AS LONG _
) AS LONGTop
3 楼rainstormmaster(暴风雨 v2.0)回复于 2006-03-10 10:37:47 得分 45
可以尝试使用ConvertINetUnicodeToMultiByte、ConvertINetMultiByteToUnicodeTop




