最近的一个项目中用到了多语言,从文本中读取为string类型,然后用MultiByteToWideChar转换为CString再显示到界面上,问题就在于MultiByteToWideChar的第一个参数是Codepage值(页代码),不同语言的该值都不同。我解决的办法是多方查资料,然后有的语言几乎要把所有可能的值都试一遍才知道该用什么值,现将项目中用到的10种语言的Codepage值列出如下:
英语:CP_ACP / 0
法语:1252
西班牙语:1252
德语:28591
波兰语:1250
葡萄牙语:28591
瑞典语:1252
意大利语:1252
荷兰语:1252
匈牙利语:1252
另,此项目的语言设置中要求各语种串用原始的语言显示,实现如下:
英语:m_listLanguage.AddString(_T("English"),0,20);//English
法语:m_listLanguage.AddString(_T("\x46\x72\x61\x6E\xE7\x61\x69\x73"),0,20);//Francais
西班牙语:m_listLanguage.AddString(_T("\x45\x73\x70\x61\xF1\x6F\x6C"),0,20);//Espanol
德语:m_listLanguage.AddString(_T("Deutsch"),0,20);//Deutsch
波兰语:m_listLanguage.AddString(_T("Polski"),0,20);//Polski
葡萄牙语:m_listLanguage.AddString(_T("\x50\x6F\x72\x74\x75\x67\x75\xEA\x73"),0,20);//Portugues
瑞典语:m_listLanguage.AddString(_T("Svenska"),0,20);//Svenska
意大利语:m_listLanguage.AddString(_T("Italiano"),0,20);//Italiano
荷兰语:m_listLanguage.AddString(_T("Nederlands"),0,20);//Nederlands
匈牙利语:m_listLanguage.AddString(_T("Magyar"),0,20);//Magyar
以作纪念,免得用时无处可寻