怎样将gb2312转换为iso8859-1编码?

huajieyu124 2006-01-17 11:49:23
我先用将其转换为宽字符,然后WideCharToMultiByte(1252,....)发现中文转换为?号
...全文
505 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
thisisll 2006-01-17
  • 打赏
  • 举报
回复
1252这个codepage是欧洲的字符的(拉丁语系的)
我不知道iso8859-1是什么编码~~
你可以在MSDN上去找你需要的codepage
ddmor 2006-01-17
  • 打赏
  • 举报
回复
8859西欧编码中中文使用的是unicode编码,比如汉字“中文”就编码为中文,其中20013就是unicode编码值,所以宽字符到8859的转换就很简单了,给你一个现成的转换代码
const char* wc2ISO8859_1(const WCHAR*wc,string&s8859)
{
//iso8859单个汉字编码最多为8个字节
int iL=wcslen(wc);
char ch[8]="&#";
int nC=0;
char*szBuf=new char[iL*8+1];
char*szRst=szBuf;
// 注意假定当前宽字符使用utf16le编码
const WCHAR*p=wc;
while(*p!=0)
{
if(*p<256)
{// 英文字符
*szRst=*p;
szRst++;
}
else
{// 中文字符
nC=strlen(itoa(*p,ch+2,10)); // 中文编码长度
ch[2+nC]=';';
memcpy(szRst,ch,3+nC); // 拷贝中文编码
szRst+=3+nC;
}
p++;
}
*szRst=0;
s8859=szBuf;
delete [] szBuf;
return s8859.c_str();
}

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧