UTF8格式的泰文数据转换成ANSI格式数据时出现问号乱码

xgPaul 2016-03-03 11:28:00
1,从UTF8格式的文本中读取泰文数据后,使用MultiByteToWideChar函数和WideCharToMultiByte函数转换成ANSI格式的数据时(相同代码转换中文数据都没有问题),转换的数据为问号,请问如何把utf8格式的泰文数据转换成ansi格式的数据?
...全文
687 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
relaxisland 2016-03-03
  • 打赏
  • 举报
回复
又或者 找个 编辑器, 把编码改为 泰文 看看。
relaxisland 2016-03-03
  • 打赏
  • 举报
回复
你转换后的东西,必须在 泰文操作系统上显示吧。 不知道在控制面板--》语言和区域--》非UNICODE程序的语言 修改成 泰文, 是否可以显示?
iyomumx 2016-03-03
  • 打赏
  • 举报
回复
首先需要明确的一点是ANSI不是某种特定的编码,而是指Windows当前的编码。在简体中文系统中,它代指CP936,即GBK(有少许出入)。GBK编码了2万多个字符,但这个数量完全不能包容所有汉字,遑论其他语言文字。所以答案很简单,GBK并不支持泰文字符。
赵4老师 2016-03-03
  • 打赏
  • 举报
回复
仅供参考:
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
HWND WINAPI GetConsoleWindow();
void HideTheCursor() {
    CONSOLE_CURSOR_INFO cciCursor;
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

    if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {
        cciCursor.bVisible = FALSE;
        SetConsoleCursorInfo(hStdOut, &cciCursor);
    }
}
void ShowTheCursor() {
    CONSOLE_CURSOR_INFO cciCursor;
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

    if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {
        cciCursor.bVisible = TRUE;
        SetConsoleCursorInfo(hStdOut, &cciCursor);
    }
}
int main() {
    HWND  hwnd;
    HDC   hdc;
    HFONT hfont;

    system("color F0");
    system("cls");
    HideTheCursor();
    hwnd  = GetConsoleWindow();
    hdc   = GetDC(hwnd);
    hfont = CreateFont(48, 0, 0, 0, 0, 0, 0, 0, 0             , 0, 0, 0, 0, "Arial Unicode MS");
    SelectObject(hdc,hfont);
    TextOutW(hdc,10,10,L"你好",2);
    DeleteObject(hfont);
    hfont = CreateFont(48, 0, 0, 0, 0, 0, 0, 0, JOHAB_CHARSET , 0, 0, 0, 0, "Arial Unicode MS");
    SelectObject(hdc,hfont);
    TextOutW(hdc,10,80,L"\xb7f0\xb7f0\xb2dd\xb2dd",4);
    DeleteObject(hfont);
    ReleaseDC(hwnd,hdc);
    getch();
    system("color 07");
    system("cls");
    ShowTheCursor();
    return 0;
}

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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