C++ unicode2ansi 字符串转化(新人发帖,大神笔下留情)解决思路
C++ unicode2ansi 字符串转化(新人发帖,大神笔下留情)
最近做的一个项目,功能涉及包含 英文音标 的字符串转化,需要从unicode 转化到ansi编码,当然自己也试过惯用转化函数 WideCharToMultiByte,结果发现英文音标里面的特殊字符类似ɔ:ʌə之类都用?代替。之后也试过iconv库的转化,发现效果不佳。然后查好多资料,有人说 “因为英语音标系统需要一些ascii字符以外的符号,这些符号在Unicode出现前没有统一的编码和相应的字体,需要用特殊字体实现。所以在音标的输入和显示上造成了一定的混乱。”万般无奈,广发英雄帖,求大神相助。
------解决思路----------------------
软件问题+zhao4zhong1=Solution!
------解决思路----------------------
codepage就是映射表,映射表上面没有的映射关系,你怎么弄?
1 自己弄个codepage?
2 为什么不直接用Unicode编程?老项目么?
最近做的一个项目,功能涉及包含 英文音标 的字符串转化,需要从unicode 转化到ansi编码,当然自己也试过惯用转化函数 WideCharToMultiByte,结果发现英文音标里面的特殊字符类似ɔ:ʌə之类都用?代替。之后也试过iconv库的转化,发现效果不佳。然后查好多资料,有人说 “因为英语音标系统需要一些ascii字符以外的符号,这些符号在Unicode出现前没有统一的编码和相应的字体,需要用特殊字体实现。所以在音标的输入和显示上造成了一定的混乱。”万般无奈,广发英雄帖,求大神相助。
------解决思路----------------------
软件问题+zhao4zhong1=Solution!
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
HWND WINAPI GetConsoleWindow();
int main() {
HWND hwnd;
HDC hdc;
HFONT hfont;
wchar_t ws[11];
SIZE sz;
ws[ 0]=0x00E6;
ws[ 1]=0x028C;
ws[ 2]=0x0259;
ws[ 3]=0x0254;
ws[ 4]=0x03B5;
ws[ 5]=0x0283;
ws[ 6]=0x03B8;
ws[ 7]=0x0292;
ws[ 8]=0x00F0;
ws[ 9]=0x014B;
ws[10]=0;
system("color F0");
system("cls");
hwnd = GetConsoleWindow();
hdc = GetDC(hwnd);
hfont = CreateFont(48, 0, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET , 0, 0, 0, 0, "MS Mincho");
SelectObject(hdc,hfont);
GetTextExtentPoint32W(hdc,ws,10,&sz);
Rectangle(hdc,10-2,80-1,10+sz.cx+2,80+sz.cy+1);
TextOutW(hdc,10,80,ws,10);
DeleteObject(hfont);
ReleaseDC(hwnd,hdc);
getch();
system("color 07");
system("cls");
return 0;
}
------解决思路----------------------
codepage就是映射表,映射表上面没有的映射关系,你怎么弄?
1 自己弄个codepage?
2 为什么不直接用Unicode编程?老项目么?