VB或VBA编程: 如何将Shift-jis编码的文字转换成GB2312编码?
答案:2 悬赏:20 手机版
解决时间 2021-12-01 12:24
- 提问者网友:心牵心
- 2021-11-30 17:32
VB或VBA编程: 如何将Shift-jis编码的文字转换成GB2312编码?
最佳答案
- 五星知识达人网友:白昼之月
- 2021-11-30 18:29
Shift-JIS这个是日文的一种编码
你要将一种编码转到UNICODE然后再转到另外一种
用
WideCharToMultiByte
MultiByteToWideChar
http://blog.csdn.net/thisisll/archive/2005/09/01/469422.aspx追问感觉你说的很有道理,能不能给出详细代码啊?追答你查看我给那个连接,有具体说明的,
其他编码和UCS转换
int ToUCS(unsigned char *p,wchar_t* pUCS,int codepage)
{
int len = 0;
if(pUCS == NULL || p == NULL)
return -1;
len = MultiByteToWideChar(codepage,0,p,-1,NULL,0);
MultiByteToWideChar(codepage,0,p,-1,pUCS,len);
return len;
}
int UCSTo(wchar_t* pUCS,char *p,int codepage)
{
int len = 0;
if(pUCS == NULL || pBIG5 == NULL)
return -1;
len = WideCharToMultiByte(codepage,0,pUCS,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(codepage,0,pUCS,-1,p,len,NULL,NULL);
len--;
return len;
}
这里的codepage在MSDN定义如下
Bit Code page Description
ANSI
0 1252 Latin 1
1 1250 Latin 2: Eastern Europe
......
17 932 Japanese, Shift-JIS
......
18 936 Chinese: Simplified chars—PRC and Singapore追问非常感谢你的帮助.
我想要VB代码.能不能帮我写一下啊.追答主要是用到几个API函数
1.转Unicode
str是需要转换的字符串
len是转换后Unicode字符串的长度
ucsstr存放的是转换后的Unicode字符串
codepage是代码页,参考上面的回答
len = MultiByteToWideChar(codepage,0,str,-1,vbNull,0)
MultiByteToWideChar(codepage,0,str,-1,ucsstr,len)
2.Unicode转其它
output就是你最后想要得到的字符串
len = WideCharToMultiByte(codepage,0,ucsstr,-1,vbNull,0,vbNull,vbNull)
WideCharToMultiByte(codepage,0,ucsstr,-1,output,len,vbNull,vbNull)
你要将一种编码转到UNICODE然后再转到另外一种
用
WideCharToMultiByte
MultiByteToWideChar
http://blog.csdn.net/thisisll/archive/2005/09/01/469422.aspx追问感觉你说的很有道理,能不能给出详细代码啊?追答你查看我给那个连接,有具体说明的,
其他编码和UCS转换
int ToUCS(unsigned char *p,wchar_t* pUCS,int codepage)
{
int len = 0;
if(pUCS == NULL || p == NULL)
return -1;
len = MultiByteToWideChar(codepage,0,p,-1,NULL,0);
MultiByteToWideChar(codepage,0,p,-1,pUCS,len);
return len;
}
int UCSTo(wchar_t* pUCS,char *p,int codepage)
{
int len = 0;
if(pUCS == NULL || pBIG5 == NULL)
return -1;
len = WideCharToMultiByte(codepage,0,pUCS,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(codepage,0,pUCS,-1,p,len,NULL,NULL);
len--;
return len;
}
这里的codepage在MSDN定义如下
Bit Code page Description
ANSI
0 1252 Latin 1
1 1250 Latin 2: Eastern Europe
......
17 932 Japanese, Shift-JIS
......
18 936 Chinese: Simplified chars—PRC and Singapore追问非常感谢你的帮助.
我想要VB代码.能不能帮我写一下啊.追答主要是用到几个API函数
1.转Unicode
str是需要转换的字符串
len是转换后Unicode字符串的长度
ucsstr存放的是转换后的Unicode字符串
codepage是代码页,参考上面的回答
len = MultiByteToWideChar(codepage,0,str,-1,vbNull,0)
MultiByteToWideChar(codepage,0,str,-1,ucsstr,len)
2.Unicode转其它
output就是你最后想要得到的字符串
len = WideCharToMultiByte(codepage,0,ucsstr,-1,vbNull,0,vbNull,vbNull)
WideCharToMultiByte(codepage,0,ucsstr,-1,output,len,vbNull,vbNull)
全部回答
- 1楼网友:底特律间谍
- 2021-11-30 19:22
快捷键设置问题?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯