WideCharToMultiByte 越南文时存在问号

JingPingLi 2018-12-20 06:52:06
void UTF8Convert(char sourceStr[], char targetStr[])
{
int unicodeLen = MultiByteToWideChar(CP_UTF8, 0, sourceStr, -1, NULL, 0);
wchar_t * pUnicode;
pUnicode = new wchar_t[unicodeLen + 1];
memset(pUnicode, 0, (unicodeLen + 1) * sizeof(wchar_t));
int nRet = MultiByteToWideChar(CP_UTF8, 0, sourceStr, -1, pUnicode, unicodeLen);
if (nRet <= 0)
{
MessageBox("转换失败", "");
}
else
{
MessageBox("转换成功", "");
}

char * pTargetData = NULL;
int targetLen = WideCharToMultiByte(CP_ACP, 0, pUnicode, -1, pTargetData, 0, NULL, FALSE);
pTargetData = new char[targetLen + 1];
memset(pTargetData, 0, targetLen + 1);
nRet = WideCharToMultiByte(CP_ACP, 0, pUnicode, -1, pTargetData, targetLen, NULL, FALSE);
if (nRet <= 0)
{
MessageBox("转换失败\n", "");
}
else
{
MessageBox("转换成功\n", "");
}
}

试试 WideCharToMultiByte(
用过以下参数:
#define CP_OEMCP
#define CP_MACCP
#define CP_THREAD_ACP
#define CP_SYMBOL
1258—越文代码页

请教各位大神,谢谢
...全文
332 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2018-12-21
  • 打赏
  • 举报
回复
MultiByteToWideChar(CP_UTF8 先转到UNICODE
WideCharToMultiByte(1258, 转到 越文 (不要CP_ACP)
JingPingLi 2018-12-21
  • 打赏
  • 举报
回复
1.使用过WideCharToMultiByte获取大小,之后再次调用转换,末尾‘\0’有多留1个大小; 2.控制面板也是设置过; 3.使用过函数iconv(转到CP1258(越文编码),老是转码失败? 不知from_charset, to_charset 分别是什么 好? 5.使用过setlocale(LC_ALL, "区域设置和代码页设置"),"区域设置和代码页设置" 试过越文编码“”1258“”,转码不出来? 无奈, 请教各位大神?谢谢
JingPingLi 2018-12-21
  • 打赏
  • 举报
回复
VC2017debug模式 看到的

怎么看 显示的字体是否支持越文?谢谢
zgl7903 2018-12-21
  • 打赏
  • 举报
回复
在哪里看到?? 的 , 显示的字体是否支持越文? 写到文件 看16进制数据是否正确?
JingPingLi 2018-12-21
  • 打赏
  • 举报
回复
使用WideCharToMultiByte(1258, 大神请看 我调试的结果,代码哪里写错,字符串中的字符无效?
JingPingLi 2018-12-21
  • 打赏
  • 举报
回复
void UTF8Convert(char sourceStr[])
{
int unicodeLen = MultiByteToWideChar(CP_UTF8, 0, sourceStr, -1, NULL, 0);
WCHAR * pUnicode;
pUnicode = new WCHAR[unicodeLen + 1];
memset(pUnicode, 0, (unicodeLen + 1) * sizeof(WCHAR));
MultiByteToWideChar(CP_UTF8, 0, sourceStr, -1, pUnicode, unicodeLen);


BYTE * pTargetData = NULL;
int targetLen = WideCharToMultiByte(1258, 0, (LPWSTR)pUnicode, -1, (char *)pTargetData, 0, NULL, NULL);
pTargetData = new BYTE[targetLen + 1];
memset(pTargetData, 0, targetLen + 1);
WideCharToMultiByte(1258, 0, (LPWSTR)pUnicode, -1, (char *)pTargetData, targetLen, NULL, NULL);
}
1.测试越文:Loại thẻ:VIETTEL Mệnh giá:50000 Số seri:10001933541909 Mật khẩu:710164507867986 Trạng thái:Hoàn thành



大神请看 我调试的结果,代码哪里写错,还好 存在问号,谢谢

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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