解决不同语言的XP系统下文字显示乱码的问题

本文介绍了一种解决泰文或希伯来文在Windows XP操作系统中出现乱码的方法。通过获取系统默认语言标识符并设置相应的字符集来确保正确显示非英文字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在泰文或希伯来文的XP操作系统下显示文字时会出现乱码的问题,解决的方法是获取系统的nCharSet,再做设置。

代码如下:

 

 int LanguageIdentifier = GetUserDefaultLangID() & 0xFF;
 switch(LanguageIdentifier)
 {
 case(LANG_ARABIC):
  m_CharSetTemp = ARABIC_CHARSET;
  break;
 case(LANG_CHINESE):
  m_CharSetTemp = ANSI_CHARSET;
  break;
 case(LANG_ENGLISH):   
  m_CharSetTemp = ANSI_CHARSET;
  break;
 case(LANG_GREEK):
  m_CharSetTemp = GREEK_CHARSET;
  break;                  
 case(LANG_HEBREW):
  m_CharSetTemp = HEBREW_CHARSET;
  break;                       
 case(LANG_JAPANESE):
  m_CharSetTemp = SHIFTJIS_CHARSET;
  break;                 
 case(LANG_KOREAN):
  m_CharSetTemp = JOHAB_CHARSET;
  break;                           
 case(LANG_RUSSIAN):
  m_CharSetTemp = RUSSIAN_CHARSET;
  break;                   
 case(LANG_THAI):
  m_CharSetTemp = THAI_CHARSET;
  break;
 case(LANG_TURKISH):
  m_CharSetTemp = TURKISH_CHARSET;
  break;                      
 case(LANG_VIETNAMESE): 
  m_CharSetTemp = VIETNAMESE_CHARSET;
  break;
 default:
  m_CharSetTemp = DEFAULT_CHARSET;
  break;   
 }
 
 CString   str;
    str.Format( "LanguageIdentifier:%d,CharSet:%d",LanguageIdentifier,m_CharSetTemp);
 AfxMessageBox(str);

/////////////////////////////////////////////////////////////////////////////////////

 

 CRect rect;
 GetClientRect(&rect);
 CClientDC dc(this);
 CFont font;
 VERIFY(font.CreateFont(
  18,                        // nHeight
  0,                         // nWidth
  0,                         // nEscapement
  0,                         // nOrientation
  FW_NORMAL,                 // nWeight
  FALSE,                     // bItalic
  FALSE,                     // bUnderline
  0,                         // cStrikeOut
  m_CharSetTemp,              // nCharSet
  OUT_DEFAULT_PRECIS,        // nOutPrecision
  CLIP_DEFAULT_PRECIS,       // nClipPrecision
  DEFAULT_QUALITY,           // nQuality
  DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
  NULL));                 // lpszFacename
  
 CFont *pOldFont = dc.SelectObject(&font);
 dc.SetBkMode(TRANSPARENT);
 CString strText;
 GetDlgItemText(IDC_EDIT_TEST,strText);
 dc.TextOut(350,100,strText,strText.GetLength());
 dc.SelectObject(pOldFont);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值